Installer un certificat Let’s Encrypt sur un VPS d’OVH
Dans cet article je vais détailler comment installer et configurer un certificat Let’s Encrypt sur un VPS d’OVH et comment faire face aux diverses erreurs qui peuvent se produire.
L’installation automatique de Let’s Encrypt avec Certbot
Plus d’info sur Certbot : https://certbot.eff.org/
Je suis partie de ce tutoriel qui est clair et bien expliqué.
En bref, voici les commandes qu’il vous faudra exécuter depuis votre terminal (les détails sont indiqués dans le tuto) :
Et c’est tout ! Si tout s’est bien passé, votre site est accessible en HTTPS, Let’s Encrypt est installé, configuré, vous avez un joli cadenas vert et le tour est joué !
Mais… il arrive que tout ne soit pas si rose, que vous rencontriez des soucis liés au serveur. Si cela vous arrive, voici quelques pistes pour poursuivre votre installation !
Are you root ?
Dans le tuto, on vous conseille de créer un dossier avec la commande mkdir
pour vérifier les droits d’écriture. Si vous rencontrez une erreur de droit à cet instant (Permission denied) il est probable que vous ne soyez pas root
.
Ajouter sudo
avant vos commandes, cela devrait régler le problème !
Unable to locate package git-core
Si vous rencontrez l’erreur Unable to locate package git-core, Essayez ceci :
[pastacode lang= »apacheconf » manual= »sudo%20apt-get%20update » message= » » highlight= » » provider= »manual »/]puis
[pastacode lang= »apacheconf » manual= »sudo%20apt-get%20upgrade » message= » » highlight= » » provider= »manual »/]Et relancez la commande apt-get install git-core
Certbot doesn’t know how to automatically configure the web server on this system
Si après avoir lancé ./letsencrypt-auto
vous vous retrouvez avec ce message : Certbot doesn’t know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run « letsencrypt-auto certonly » to do so. You’ll need to manually configure your web server to use the resulting certificate… Alors les choses se gâtent ! Vérifiez d’abord que vous avez bien activé le module ssl avec cette commande :
Puis relancez la configuration Apache :
[pastacode lang= »apacheconf » manual= »service%20apache2%20restart » message= » » highlight= » » provider= »manual »/]Si le problème reste le même, jetez un œil aux logs (l’emplacement vous est indiqué dans le message d’erreur) pour voir ce qui coince. Si cela ne vous avance pas… : vous allez installer Let’s Encrypt manuellement.
Installer Let’s Encrypt manuellement
Pour cela, lancez la commande suivante : Veillez à remplacer votre-domaine par votre véritable nom de domaine et assurez-vous d’être positionné dans le répertoire letsencrypt en lançant la commande cd letsencrypt
en amont.
Il vous est demandé d’accepter que votre adresse IP soit enregistrée, tapez Y
(vous n’avez pas le choix). Vous verrez ensuite une instruction qui ressemblera à cela :
Create a file containing just this data:
8SX6W7PV52m3TwasDzEHw6d4Jh33ix.9SbEnRcTh77uAW43qxfVv4P4c9Q54Q
And make it available on your web server at this URL:
http://votre-domaine.fr/.well-known/acme-challenge/8SX6W7PV52m3TwasDzEHw6d4Jh33ix
Suivez ces indications en créant un fichier 8SX6W7PV52m3TwasDzEHw6d4Jh33ix dans lequel vous mettrez ce simple contenu : 8SX6W7PV52m3TwasDzEHw6d4Jh33ix.9SbEnRcTh77uAW43qxfVv4P4c9Q54Q. (A adapter évidemment en fonction des données qui vous seront transmises). Une fois que le fichier est crée et placé au bon emplacement, cliquez sur Entrée
.
Ça y est, vous avez le Graal : Congratulations! Your certificate and chain have been saved (…)
Mais ne criez pas trop vite victoire, il reste du boulot ! A commencer par renouveler l’opération pour les autres domaines pour lesquels vous souhaitez obtenir un certificat (et notamment la version avec www).
Ouvrir le port 443 d’Apache2
Apache doit écouter le port 443 et il est probable qu’en l’état il n’écoute que le port 80 (par défaut). Vérifiez et modifiez si besoin le fichier /etc/apache2/ ports.conf
Modifiez le de cette façon :
[pastacode lang= »apacheconf » manual= »NameVirtualHost%20*%3A80%0AListen%2080%0A%0A%3CIfModule%20mod_ssl.c%3E%0A%20%20%20%20NameVirtualHost%20*%3A443%0A%20%20%20%20Listen%20443%0A%3C%2FIfModule%3E%0A%0A%3CIfModule%20mod_gnutls.c%3E%0A%20%20%20%20Listen%20443%0A%3C%2FIfModule%3E%0A%0A » message= » » highlight= »5″ provider= »manual »/]Configurer votre VirtualHost pour le HTTPS
Il ne reste plus qu’à configurer le VirtualHost
pour le HTTPS et redémarrer, et on arrivera au bout de l’opération !
Rendez-vous dans le dossier /etc/apache2/sites-available
, et vérifiez que le fichier default-ssl
existe, puis activez le en lançant cette commande :
Repérez ensuite le virtualhost de votre site, il s’appelle peut-être votre-domaine.conf
. Dupliquez le et renommez le votre-domaine-ssl.conf
(vous pouvez lui donner le nom que vous voulez, mais au moins comme ça, les choses sont claires !)
Le fichier original doit ressembler à ceci (variable bien sur en fonction de votre configuration) :
[pastacode lang= »apacheconf » manual= »%3CVirtualHost%20*%3A80%3E%0A%20%20%20ServerName%20votre-domaine.fr%0A%20%20%20ServerAlias%20www.votre-domaine.fr%0A%0A%20%20%20DocumentRoot%20%22%2Fvar%2Fwww%2Fvotre-domaine%2F%22%0A%20%20%20%3CDirectory%20%2Fvar%2Fwww%2Fvotre-domaine%2F%3E%0A%20%20%20%20%20Options%20FollowSymLinks%20Indexes%0A%20%20%20%20%20AllowOverride%20All%0A%20%20%20%20%20Order%20deny%2Callow%0A%20%20%20%20%20allow%20from%20All%0A%20%20%20%3C%2FDirectory%3E%0A%0A%20%20%20ErrorLog%20%22%24%7BAPACHE_LOG_DIR%7D%2Fvotre-domaine.fr-error.log%22%0A%20%20%20CustomLog%20%22%24%7BAPACHE_LOG_DIR%7D%2Fvotre-domaine.fr-access.log%22%20combined%0A%3C%2FVirtualHost%3E%0A » message= » » highlight= » » provider= »manual »/]Et vous allez le transformez en ceci :
[pastacode lang= »apacheconf » manual= »%3CIfModule%20mod_ssl.c%3E%0A%3CVirtualHost%20*%3A443%3E%0A%20%20%20ServerName%20www.votre-domaine.fr%0A%20%20%20%0A%20%20%20DocumentRoot%20%22%2Fvar%2Fwww%2Fvotre-domaine.fr%2F%22%0A%20%20%20%3CDirectory%20%2Fvar%2Fwww%2Fvotre-domaine.fr%2F%3E%0A%20%20%20%20%20Options%20FollowSymLinks%20Indexes%0A%20%20%20%20%20AllowOverride%20All%0A%20%20%20%20%20Order%20deny%2Callow%0A%20%20%20%20%20allow%20from%20All%0A%20%20%20%3C%2FDirectory%3E%0A%20%20%20%0A%20%20%20ErrorLog%20%22%24%7BAPACHE_LOG_DIR%7D%2Fvotre-domaine.fr-error.log%22%0A%20%20%20CustomLog%20%22%24%7BAPACHE_LOG_DIR%7D%2Fvotre-domaine.fr-access.log%22%20combined%0A%0A%0ASSLCertificateFile%20%20%20%20%20%20%2Fetc%2Fletsencrypt%2Flive%2Fvotre-domaine.fr%2Fcert.pem%0ASSLCertificateKeyFile%20%20%20%2Fetc%2Fletsencrypt%2Flive%2Fvotre-domaine.fr%2Fprivkey.pem%0ASSLCertificateChainFile%20%2Fetc%2Fletsencrypt%2Flive%2Fvotre-domaine.fr%2Fchain.pem%0A%0ASSLEngine%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20on%0ASSLProtocol%20%20%20%20%20%20%20%20%20%20%20%20%20all%20-SSLv2%20-SSLv3%0ASSLCipherSuite%20%20%20%20%20%20%20%20%20%20ECDHE-RSA-AES128-GCM-SHA256%3AECDHE-ECDSA-AES128-GCM-SHA256%3AECDHE-RSA-AES256-GCM-SHA384%3AECDHE-ECDSA-AES256-GCM-SHA384%3ADHE-RSA-AES128-GCM-SHA256%3ADHE-DSS-AES128-GCM-SHA256%3AkEDH%2BAESGCM%3AECDHE-RSA-AES128-SHA256%3AECDHE-ECDSA-AES128-SHA256%3AECDHE-RSA-AES128-SHA%3AECDHE-ECDSA-AES128-SHA%3AECDHE-RSA-AES256-SHA384%3AECDHE-ECDSA-AES256-SHA384%3AECDHE-RSA-AES256-SHA%3AECDHE-ECDSA-AES256-SHA%3ADHE-RSA-AES128-SHA256%3ADHE-RSA-AES128-SHA%3ADHE-DSS-AES128-SHA256%3ADHE-RSA-AES256-SHA256%3ADHE-DSS-AES256-SHA%3ADHE-RSA-AES256-SHA%3AAES128-GCM-SHA256%3AAES256-GCM-SHA384%3AAES128-SHA256%3AAES256-SHA256%3AAES128-SHA%3AAES256-SHA%3AAES%3ACAMELLIA%3ADES-CBC3-SHA%3A!aNULL%3A!eNULL%3A!EXPORT%3A!DES%3A!RC4%3A!MD5%3A!PSK%3A!aECDH%3A!EDH-DSS-DES-CBC3-SHA%3A!EDH-RSA-DES-CBC3-SHA%3A!KRB5-DES-CBC3-SHA%0ASSLHonorCipherOrder%20%20%20%20%20on%0ASSLCompression%20%20%20%20%20%20%20%20%20%20off%0ASSLOptions%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2BStrictRequire%0A%0A%3C%2FVirtualHost%3E%0A%3C%2FIfModule%3E » message= » » highlight= »1,2,17-26,29″ provider= »manual »/]Activez maintenant ce nouveau virtualhost :
[pastacode lang= »apacheconf » manual= »a2ensite%20votre-domaine-ssl.conf » message= » » highlight= » » provider= »manual »/]Et relancez le serveur :
[pastacode lang= »apacheconf » manual= »service%20apache2%20reload » message= » » highlight= » » provider= »manual »/]Cette fois ci, c’est la bonne… Rendez-vous sur votre site https://votre-domaine.fr, vous devriez accéder à votre site en HTTPS !
Pour configurer vos domaines avec et sans www, ajoutez un virtualhost pour chaque domaine. Vous pouvez les mettre dans le même fichier, les uns après les autres (tant qu’ils restent encadrés par <IfModule mod_ssl.c></IfModule>
)
Il ne vous reste plus qu’à rendre votre site totalement compatible HTTPS. Pour cela, vous pouvez lire Comment passer un site en HTTPS
Renouveler automatiquement le certificat
Deux petites erreurs de chemin dans le tuto donné en début d’article…
Une fois que vous avez vérifiez que Cron est installé et actif comme ceci :
[pastacode lang= »bash » manual= »sudo%20apt-get%20install%20cron%0Asudo%20%2Fetc%2Finit.d%2Fcron%20start » message= » » highlight= » » provider= »manual »/]configurez votre tache cron de la manière suivante :
[pastacode lang= »bash » manual= »sudo%20crontab%20-e%0A30%202%20*%20*%201%20%2Fletsencrypt%2Fletsencrypt-auto%20renew%20%3E%3E%20%2Fvar%2Flog%2Fle-renew.log » message= »Renouvellement automatique du certificat SSL » highlight= » » provider= »manual »/]
Si cet article vous a aidé, si vous avez des questions ou des améliorations à proposer, n'hésitez pas à me laisser un commentaire en bas de page !
1 réponse
[…] Vous devrez installer le certificat en SSH. Vous pouvez consulter mon article qui explique comment installer et configurer un certificat Let’s Encrypt sur un VPS. […]