Installer un certificat SSL sur NGinx est l’affaire de quelques minutes. Dans cet exemple, j’ai choisi NameCheap comme fournisseur de Certificat SSL. Les certificats SSL de type GeoTrust RapidSSL sont au prix de 10.95 USD (~7.95 €uros au moment de ce billet).
Préparation des certificats SSL
Rendez-vous sur votre serveur:
cd /etc/nginx/ # Création d'un dossier ssl pour y mettre les certificats mkdir ssl cd ssl/
Génération des certificats:
# Génération du fichier .key openssl genrsa -des3 -out admin-serv.net.key 2048 Generating RSA private key, 2048 bit long modulus ...+++ ..................................................................................................+++ e is 65537 (0x10001) Enter pass phrase for admin-serv.net.key: Verifying - Enter pass phrase for admin-serv.net.key:
Votre fichier .key (protégé par mot de passe) est maintenant créé, nous passons à la génération du CSR:
openssl req -new -key admin-serv.net.key -out admin-serv.net.csr # Votre mot de passe saisi plus haut: Enter pass phrase for admin-serv.net.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:France Locality Name (eg, city) []:Paris Organization Name (eg, company) [Internet Widgits Pty Ltd]:Admin Serveur Organizational Unit Name (eg, section) []:Admin Serveur # C'est la seule question réellement importante # Elle doit correspondre exactement à votre domaine à sécuriser Common Name (eg, YOUR name) []:admin-serv.net Email Address []:postmaster@admin-serv.net Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Votre fichier CSR est désormais créé. Nous allons toutefois en profiter pour déprotéger le fichier KEY afin que NGinx puisse se relancer par la suite tout seul. Vous pouvez en profiter pour vérifer les informations saisies:
openssl req -noout -text -in admin-serv.net.csr [...] Subject: C=FR, ST=France, L=Paris, O=Admin Serveur, OU=Admin Serveur, CN=admin-serv.net/emailAddress=postmaster@admin-serv.net [...]
Déprotection de la clé
openssl rsa -in admin-serv.net.key -out admin-serv.net.deprotected.key Enter pass phrase for admin-serv.net.key: writing RSA key
Votre clé n’a maintenant plus de mot de passe bloquant qui aurait gêné un restart de NGinx.
Soumission à NameCheap
Rendez-vous sur NameCheap, dans la section Certificat SSL. Je vous recommande le « RapidSSL Domain Validated » qui nécessite uniquement une validation par email. C’est rapide et simple.
NameCheap va vous demander votre CSR et le type de votre serveur Web. NGinx n’étant pas indiqué vous pouvez mettre n’importe quoi, personnellement je mets Apache 2. Sélectionnez ensuite une adresse email que vous pouvez vérifier, un lien de confirmation vous conduisant chez GeoTrust vous sera transmis.
Cliquez sur ce lien, vous allez, dans les secondes qui suivent recevoir votre certificat SSL (Fichier CRT) par email.
Attention, NameCheap va vous transmettre deux certificats SSL : un nommé « Web Server CERTIFICATE », et un autre nommé « INTERMEDIATE CA ». Il va vous falloir les deux pour que le tout fonctionne parfaitement.
Enregistrez le « Web Server CERTIFICATE » dans un fichier nommé « admin-serv.crt », et enregistrez le « INTERMEDIATE CA » dans un fichier nommé « rapidssl.ca.crt ».
Nous allons ensuite créé un unique fichier CRT contenant ces deux précédents certificats
cat admin-serv.crt rapidssl.ca.crt > certificate.admin-serv.net.crt
Voilà le tout est prêt, il ne vous reste plus qu’à configurer NGinx correctement pour lui faire utiliser votre certificat
nano /etc/nginx/sites-enabled/default
# Adaptez à vos besoins:
server {
listen 443;
server_name admin-serv.net;
ssl on;
ssl_certificate /etc/nginx/ssl/certificate.admin-serv.net.crt;
ssl_certificate_key /etc/nginx/ssl/admin-serv.net.deprotected.key;
location / {
root /home/www/;
index index.php index.html index.htm;
}
}
Relancez ensuite NGinx
/etc/init.d/nginx restart Restarting nginx: nginx.
Il ne vous reste plus qu’à tester :
curl -v -I https://admin-serv.net/
Si vous n’avez pas d’alerte de sécurité c’est que tout a bien fonctionné
No responses yet