Installer un certificat SSL Cloudflare Origin avec Nginx

Il s’agit peut-être de la fonctionnalité la plus intéressante avec Cloudflare, la possibilité d’installer un certificat SSL fournit par Cloudflare sur votre serveur web. Cela permet de chiffrer les connexions entre votre serveur et les serveurs de Cloudflare, et vous pouvez générer un certificat valide pour 15 ans, soit largement plus que les 90 jours d’un certificat Let’s Encrypt.

Cloudflare SSL Full Strict

Générer un certificat ainsi qu’une clé privée avec Cloudflare

Pour commencer, vous devez vous rendre dans la partie “Crypto” du domaine pour lequel vous souhaitez générer un certificat. Vous trouverez alors la section Origin Certificates dans laquelle nous allons pouvoir générer notre certificat SSL ainsi que notre clé privée.

Vous pouvez donc cliquer comme dans l’exemple ci-dessous sur le bouton Create Certificate.

Créer un certificat SSL Cloudflare

Vous pouvez si vous le souhaitez générer une requête de Certificat nommé CSR (Certificate Signing Request) ainsi qu'une clé privée, ou laisser Cloudflare le faire pour vous. Par contre il préférable de choisir un certificat de type ECDSA plutôt que RSA, aussi bien pour les performances, que pour la sécurité.

Cloudflare origin certificat

Vous allez alors obtenir votre certificat ainsi que votre clé privée.

Cloudflare ECDSA Origin certificate

Copiez tout d'abord la clé dans un fichier votredomaine-key.pem, à conserver précieusement car vous ne pourrez pas la télécharger à nouveau depuis Cloudflare.

Copiez ensuite le certificat SSL dans un deuxième fichier que nous allons nommer votredomaine-crt.pem. Et placez les deux fichiers dans un dossier votre choix, par exemple un dossier nommé ssl dans /etc/nginx.

Cependant avant de pouvoir ajouter le certificat dans la configuration Nginx, il faut ajouter la signature de l’autorité de certification dans le même fichier que notre certificat. Pour cela nous allons télécharger le certificat root de Cloudflare et le fusionner avec notre certificat :

wget wget https://support.cloudflare.com/hc/en-us/article_attachments/206709098/cloudflare_origin_ecc.pem
cat votredomaine-crt.pem cloudflare_origin_ecc.pem > votredomaine-fullchain.pem 

Installer le certificat avec nginx

Pour utiliser ce certificat dans votre configuration nginx, il vous suffit d’ajouter les lignes suivantes à votre bloc server :

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate     /etc/nginx/ssl/votredomaine-fullchain.pem;
ssl_certificate_key     /etc/nginx/ssl/votredomaine-key.pem;

Vous pouvez vérifier que tout est correct avant t d’appliquer la configuration en utilisant nginx -t. Si il n'y a aucune erreur, vous pouvez alors utiliser service nginx reload

Vous pouvez alors changer le niveau SSL de votre domaine en Full (strict) via l’interface Cloudflare :

Cloudflare SSL Full (strict)

Allez plus loin avec les Authenticated Origin Pulls

Nous pouvons même aller plus loin et mettre en place un certificat pour authentifié notre serveur. Ce service est nommé “Authenticated Origin Pulls” dans le panel Cloudflare et permet d’éviter que des requêtes soient faites à votre serveur sans passer par le proxy Cloudflare.

Pour le mettre en place il nous suffit de télécharger le certificat suivant :

wget -O /etc/nginx/ssl/origin-pull-ca.pem https://support.cloudflare.com/hc/en-us/article_attachments/201243967/origin-pull-ca.pem

Et de l’inclure dans notre configuration nginx :

ssl_client_certificate /etc/nginx/ssl/origin-pull-ca.pem;
ssl_verify_client on;

Nous pouvons alors activer depuis l’interface Cloudflare la fonctionnalité Authenticated Origin Pulls.

Commentaires

licence creative common

L’ensemble des articles publiés sur jesuisadmin.fr sont mis à disposition
selon les termes de la licence CC BY-NC-SA 4.0.

Article précédent Article suivant