Let's Encrypt est une autorité de certification (CA) qui fournit des certificats SSL gratuits avec un client automatisé. En utilisant un certificat SSL Let's Encrypt, vous pouvez crypter le trafic entre votre site Web et vos visiteurs. L'ensemble du processus est simple et les renouvellements peuvent être automatisés. Notez également que l'installation ou le renouvellement de certificats n'entraîne aucun temps d'arrêt.
Dans ce didacticiel, nous utiliserons Certbot pour obtenir, installer et renouveler automatiquement votre certificat SSL. Certbot est activement développé par l'Electronic Frontier Foundation (EFF) et c'est le client recommandé pour Let's Encrypt.
Conditions préalables
- Une instance Vultr exécutant Ubuntu 16.04
- Un nom de domaine enregistré pointant vers votre serveur
- Nginx
Installer Certbot
Pour obtenir un certificat SSL Let's Encrypt, vous devez installer le client Certbot sur votre serveur.
Ajoutez le référentiel. Appuyez sur la ENTERtouche lorsque vous êtes invité à accepter.
add-apt-repository ppa:certbot/certbot
Mettez à jour la liste des packages.
apt-get update
Continuez en installant Certbot et le package Nginx de Certbot.
apt-get -y install python-certbot-nginx
Configuration de Nginx
Certbot configure automatiquement SSL pour Nginx, mais pour ce faire, il doit trouver le bloc serveur dans votre fichier de configuration Nginx. Pour ce faire, il fait correspondre la server_name
directive du fichier de configuration avec le nom de domaine pour lequel vous demandez un certificat.
Si vous utilisez le fichier de configuration par défaut, /etc/nginx/sites-available/default
ouvrez-le avec un éditeur de texte tel que nano
et recherchez la server_name
directive. Remplacez le trait de soulignement, _
par vos propres noms de domaine:
nano /etc/nginx/sites-available/default
Après avoir modifié le fichier de configuration, la server_name
directive doit ressembler à ceci. Dans cet exemple, je suppose que votre domaine est example.com et que vous demandez un certificat pour example.com et www.example.com.
server_name example.com www.example.com;
Continuez en vérifiant la syntaxe de vos modifications.
nginx -t
Si la syntaxe est correcte, redémarrez Nginx pour utiliser la nouvelle configuration. Si vous obtenez des messages d'erreur, rouvrez le fichier de configuration et recherchez d'éventuelles fautes de frappe, puis réessayez.
systemctl restart nginx
Obtention d'un certificat SSL Let's Encrypt
La commande suivante obtiendra un certificat pour vous. Modifiez votre configuration Nginx pour l'utiliser et rechargez Nginx.
certbot --nginx -d example.com -d www.example.com
Vous pouvez également demander un certificat SSL pour des domaines supplémentaires. Ajoutez simplement l' -d
option " " autant de fois que vous le souhaitez.
certbot --nginx -d example.com -d www.example.com -d example.net -d example.net
Dans le cas où vous souhaitez uniquement obtenir le certificat de Let's Encrypt sans l'installer automatiquement, vous pouvez utiliser la commande suivante. Cela apporte des modifications temporaires à votre configuration Nginx pour obtenir le certificat et les annule une fois le certificat téléchargé.
certbot --nginx certonly -d example.com -d www.example.com
Si vous exécutez Certbot pour la première fois, vous serez invité à saisir une adresse e-mail et à accepter les conditions d'utilisation. Cette adresse e-mail sera utilisée pour les notifications de renouvellement et de sécurité. Une fois que vous avez fourni une adresse e-mail, Certbot demandera un certificat à Let's Encrypt et lancera un défi pour vérifier que vous contrôlez le domaine en question.
Si Certbot peut obtenir un certificat SSL, il vous demandera comment vous souhaitez configurer vos HTTPS
paramètres. Vous pouvez soit rediriger les visiteurs qui visitent votre site Web via une connexion non sécurisée, soit les laisser y accéder via la connexion non sécurisée. Cela doit généralement être activé car il garantit que les visiteurs accèdent uniquement à la version protégée par SSL de votre site Web. Sélectionnez votre choix, puis appuyez sur ENTER.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Enfin, Certbot confirmera que le processus a réussi et où vos certificats sont stockés. Vos certificats sont maintenant téléchargés et installés.
Automatiser le renouvellement
Parce que Let's Encrypt est une autorité de certification gratuite et pour encourager les utilisateurs à automatiser le processus de renouvellement, les certificats ne sont valables que pendant 90 jours. Certbot se chargera de renouveler automatiquement les certificats. Il le fait en exécutant certbot renew
deux fois par jour via systemd
.
Vous pouvez vérifier que le renouvellement automatique fonctionne en exécutant cette commande.
certbot renew --dry-run
Vous pouvez également renouveler manuellement votre certificat à tout moment en exécutant la commande suivante.
certbot renew
Configuration améliorée
Les commandes ci-dessus obtiennent et installent le certificat SSL avec une configuration adaptée à la plupart des cas. Si vous souhaitez implémenter des mesures de sécurité avancées pour votre site Web, vous pouvez utiliser la commande suivante pour obtenir le certificat.
certbot --nginx --rsa-key-size 4096 --must-staple -d example.com -d www.example.com
Le --rsa-key-size 4096
utilise une clé RSA 4096 bits au lieu d'une clé 2048 bits, ce qui est plus sûr. L'inconvénient est qu'une clé plus grande entraîne une légère surcharge de performances. En outre, les anciens navigateurs et appareils peuvent ne pas prendre en charge les clés RSA 4096 bits.
Le --must-staple
ajoute l'extension OCSP Must Staple au certificat et configure Nginx pour l'agrafage OCSP. Cette extension permet aux navigateurs de vérifier que votre certificat n'a pas été révoqué et peut être approuvé. Cependant, tous les navigateurs ne prennent pas en charge cette fonctionnalité.