Comment installer un certificat SSL provenant d’une autorité de certification commerciale

Introduction

Ce tutoriel vous montrera comment acquérir et installer un certificat SSL auprès d’une autorité de certification (CA) commerciale et de confiance. Les certificats SSL permettent aux serveurs Web de chiffrer leur trafic et offrent également un mécanisme pour valider l’identité du serveur auprès de ses visiteurs. Les sites Web utilisant SSL sont accessibles via le protocole https://.

Avant le milieu des années 2010, de nombreux petits sites Web n’utilisaient pas toujours SSL ou HTTPS. Depuis lors, les attentes en matière de sécurité ont augmenté, et le projet Let’s Encrypt a été créé pour fournir des certificats SSL gratuits et de confiance à grande échelle, permettant à presque tout le monde d’utiliser HTTPS selon les besoins.

Cependant, il existe certaines limitations aux certificats de Let’s Encrypt. Ils expirent tous les 3 mois, nécessitant généralement que vous ayez un script de renouvellement automatique fonctionnel en place, et peuvent être difficiles à utiliser dans des environnements où cela n’est pas possible. Let’s Encrypt ne fournit pas non plus de certificats de Validation Étendue qui valident la propriété légale de votre présence sur le Web, ni de Certificats Wildcard qui correspondent automatiquement à tous les sous-domaines possibles de votre site Web (comme boutique.exemple.com) sans que vous ayez à les enregistrer manuellement.

Pour la plupart des utilisateurs, ces limitations ne seront pas significatives. Let’s Encrypt est une option populaire pour de nombreux sites web personnels et commerciaux. Cependant, si vous avez des exigences particulières en matière de logiciels d’entreprise ou si vous exploitez une très grande activité commerciale, vous devriez envisager d’acheter un certificat auprès d’une autorité de certification commerciale.

Ce tutoriel explique comment sélectionner et déployer un certificat SSL auprès d’une autorité de certification de confiance. Une fois que vous avez obtenu votre certificat SSL, ce tutoriel couvrira son installation sur les serveurs web Nginx et Apache.

Prérequis

Il y a plusieurs prérequis pour tenter d’obtenir un certificat SSL auprès d’une autorité de certification commerciale:

  • Un nom de domaine enregistré. Ce tutoriel utilisera example.com comme exemple. Vous pouvez acheter un nom de domaine chez Namecheap, en obtenir un gratuitement avec Freenom, ou utiliser le registraire de domaine de votre choix.

  • Accédez à l’une des adresses e-mail figurant dans l’enregistrement WHOIS de votre domaine ou à une adresse e-mail de type « admin » sur le domaine lui-même. Les autorités de certification qui délivrent des certificats SSL valideront généralement le contrôle du domaine en envoyant un e-mail de validation à l’une des adresses figurant dans l’enregistrement WHOIS du domaine, ou à une adresse e-mail d’administration générique sur le domaine lui-même. Pour obtenir un certificat de validation étendue, vous devrez également fournir à la CA des documents pour établir l’identité légale du propriétaire du site Web, entre autres choses.

  • Configuration des enregistrements DNS pour votre serveur. Si vous utilisez DigitalOcean, veuillez consulter notre documentation DNS pour plus de détails sur la manière de les ajouter.

Ce tutoriel fournira des instructions de configuration pour un serveur Ubuntu 22.04, en suivant ce tutoriel Configuration initiale du serveur pour Ubuntu 22.04, incluant la création d’un utilisateur non-root activé pour sudo et un pare-feu. La plupart des distributions Linux modernes fonctionneront de manière similaire.

Vous devriez également avoir un serveur web tel que Nginx ou Apache installé, en suivant le tutoriel Comment installer Nginx sur Ubuntu 22.04 ou Comment installer le serveur web Apache sur Ubuntu 22.04. Assurez-vous d’avoir un bloc serveur (ou hôte virtuel Apache) configuré pour votre domaine.

Étape 1 – Choix de votre autorité de certification

Si vous n’êtes pas sûr de l’autorité de certification à utiliser, plusieurs facteurs doivent être pris en compte.

Membres du programme de certificats racines

Le point le plus crucial est que le CA que vous choisissez soit membre des programmes de certificats racines des systèmes d’exploitation et des navigateurs web les plus couramment utilisés, c’est-à-dire qu’il s’agit d’un CA « de confiance », et que son certificat racine soit reconnu par les navigateurs courants et autres logiciels. Si le certificat SSL de votre site web est signé par un CA de confiance, son identité est considérée comme valide par les logiciels qui font confiance au CA.

La plupart des AC commerciaux que vous rencontrerez seront membres des programmes racines AC courants, mais il est toujours bon de vérifier avant d’effectuer votre achat de certificat. Par exemple, Apple publie sa liste de certificats racines SSL de confiance.

Types de certificats

Assurez-vous de choisir un CA qui propose le type de certificat dont vous avez besoin. De nombreux AC proposent des variations de ces types de certificats sous différentes appellations et structures de tarification. Voici une brève description de chaque type:

  • Domaine unique: Utilisé pour un seul domaine, par exemple exemple.com. Notez que les sous-domaines supplémentaires, tels que www.exemple.com, ne sont pas inclus
  • Joker: Utilisé pour un domaine et tous ses sous-domaines. Par exemple, un certificat de joker pour *.exemple.com peut également être utilisé pour www.exemple.com et magasin.exemple.com.
  • Domaines multiples : Connus sous le nom de certificats SAN ou UC, ceux-ci peuvent être utilisés avec plusieurs domaines et sous-domaines ajoutés au champ Nom alternatif du sujet. Par exemple, un seul certificat multi-domaines pourrait être utilisé avec example.com, www.example.com et example.net

En plus des types de certificats mentionnés ci-dessus, il existe différents niveaux de validations que les AC proposent :

  • Validation de domaine (DV) : Les certificats DV sont délivrés après que l’AC a validé que le demandeur possède ou contrôle le domaine en question
  • Validation d’organisation (OV) : Les certificats OV ne peuvent être délivrés qu’après que l’AC émettrice a validé l’identité légale du demandeur
  • Validation étendue (EV) : Les certificats EV ne peuvent être délivrés qu’après que l’AC émettrice a validé l’identité légale, entre autres choses, du demandeur, conformément à un ensemble strict de lignes directrices. Le but de ce type de certificat est de fournir une assurance supplémentaire de la légitimité de l’identité de votre organisation aux visiteurs de votre site. Les certificats EV peuvent être monodomaine ou multidomaine, mais pas de type générique

Fonctionnalités supplémentaires

De nombreux AC offrent une grande variété de fonctionnalités « bonus » pour se différencier du reste des fournisseurs de certificats SSL. Certaines de ces fonctionnalités peuvent vous faire économiser de l’argent, il est donc important de peser vos besoins par rapport aux offres avant de faire un achat. Des exemples de fonctionnalités à rechercher incluent des réémissions de certificat gratuites ou un certificat au prix d’un seul domaine qui fonctionne pour www. et le nom de domaine de base, par exemple www.example.com avec un SAN de example.com.

Étape 2 – Génération d’une CSR et d’une clé privée

Après avoir trié vos prérequis et déterminé le type de certificat dont vous avez besoin, il est temps de générer une demande de signature de certificat (CSR) et une clé privée.

Si vous prévoyez d’utiliser Apache HTTP ou Nginx comme serveur web, vous pouvez utiliser la commande openssl pour générer votre clé privée et CSR sur votre serveur web. Dans ce tutoriel, vous pouvez conserver tous les fichiers pertinents dans votre répertoire personnel, mais n’hésitez pas à les stocker dans un endroit sécurisé sur votre serveur :

Pour générer une clé privée, appelée example.com.key, et une CSR, appelée example.com.csr, exécutez cette commande (remplacez example.com par le nom de votre domaine) :

  1. openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

À ce stade, vous serez invité à fournir plusieurs lignes d’informations qui seront incluses dans votre demande de certificat. La partie la plus importante est le champ Common Name, qui doit correspondre au nom que vous souhaitez utiliser avec votre certificat – par exemple, example.com, www.example.com, ou (pour une demande de certificat générique) *.example.com. Si vous prévoyez d’obtenir un certificat OV ou EV, assurez-vous que tous les autres champs reflètent correctement les détails de votre organisation ou de votre entreprise. Il n’est pas nécessaire de fournir un « mot de passe de défi ».

Par exemple:

Output
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

Cela générera un fichier .key et un fichier .csr. Le fichier .key est votre clé privée et doit être conservé en sécurité. Le fichier .csr est ce que vous enverrez à l’AC pour demander votre certificat SSL.

  1. ls example.com*
Output
example.com.csr example.com.key

Vous devrez copier et coller votre CSR lors de la soumission de votre demande de certificat à votre AC. Pour imprimer le contenu de votre CSR, utilisez cat:

cat example.com.csr

Maintenant, vous êtes prêt à acheter un certificat auprès d’un AC.

Étape 3 – Achat et obtention d’un certificat

Il existe de nombreux fournisseurs de CA commerciaux, et vous pouvez comparer et contraster les options les plus appropriées pour votre propre configuration. Par exemple, Namecheap agit en tant que revendeur de certificats SSL et a changé de fournisseurs de CA en amont par le passé pour offrir la meilleure valeur. Actuellement, ils proposent des certificats de Comodo CA. Voici un échantillon de leurs offres en décembre 2022 :

Après avoir fait une sélection, vous devrez télécharger le CSR que vous avez généré à l’étape précédente. Votre fournisseur de CA aura probablement également une étape d’approbation, qui enverra une demande de validation par e-mail à une adresse figurant dans le WHOIS de votre domaine ou à une adresse de type administrateur du domaine pour lequel vous obtenez un certificat.

Après avoir approuvé le certificat, il sera envoyé par e-mail à l’administrateur désigné. Copiez et enregistrez-les sur votre serveur dans le même emplacement où vous avez généré votre clé privée et votre CSR. Nommez le certificat avec le nom de domaine et une extension .crt, par exemple, exemple.com.crt, et nommez le certificat intermédiaire intermediate.crt.

Le certificat est maintenant prêt à être installé sur votre serveur web, mais avant, vous devrez peut-être apporter quelques modifications à votre pare-feu.

Étape 4 – Mettre à jour votre pare-feu pour autoriser HTTPS

Si vous avez le pare-feu ufw activé comme recommandé par notre guide d’installation Ubuntu 22.04, vous devrez ajuster les paramètres pour permettre le trafic HTTPS. Nginx et Apache enregistrent tous deux quelques profils avec ufw lors de l’installation.

Vous pouvez voir les paramètres actuels en tapant :

  1. sudo ufw status

Si vous recevez une sortie contenant uniquement Nginx HTTP ou Apache, seul le trafic HTTP est autorisé vers le serveur Web :

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Pour permettre également le trafic HTTPS, autorisez le profil Nginx Full ou Apache Full et supprimez l’autorisation redondante du profil HTTP :

  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw delete allow 'Nginx HTTP'

Cela devrait produire un résultat comme celui-ci :

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

À l’étape finale, vous installerez le certificat.

Étape 5 – Installation d’un certificat sur votre serveur

Après avoir obtenu votre certificat auprès de l’AC de votre choix, vous devez l’installer sur votre serveur Web. Cela implique d’ajouter quelques lignes liées à SSL à la configuration de votre logiciel serveur Web.

Ce tutoriel couvrira la configuration de Nginx et Apache sur Ubuntu 22.04, mais la plupart des distributions Linux modernes fonctionneront de manière similaire. Ce tutoriel suppose également ce qui suit :

  • La clé privée, le certificat SSL et, le cas échéant, les certificats intermédiaires de l’AC sont situés dans un répertoire personnel, à /home/sammy
  • La clé privée s’appelle example.com.key
  • Le certificat SSL est appelé example.com.crt
  • Le(s) certificat(s) intermédiaire(s) de l’AC renvoyés par votre fournisseur se trouvent dans un fichier appelé intermediate.crt

Note : En environnement de production, ces fichiers doivent être stockés quelque part où seul le processus du serveur web (généralement root) peut y accéder, et la clé privée doit être gardée en sécurité. Par exemple, Let’s Encrypt stocke les certificats qu’il génère dans /etc/letsencrypt. Les exemples de production varieront en raison de la complexité des configurations multi-serveurs.

Nginx

Voici les étapes pour déployer manuellement un certificat SSL sur Nginx.

Si votre AC n’a retourné qu’un certificat intermédiaire, vous devez créer un fichier de certificat « enchaîné » unique qui contient votre certificat et les certificats intermédiaires de l’AC.

En supposant que votre fichier de certificat s’appelle example.com.crt, vous pouvez utiliser la commande cat pour ajouter des fichiers ensemble afin de créer un fichier combiné appelé example.com.chained.crt:

  1. cat example.com.crt intermediate.crt > example.com.chained.crt

En utilisant nano ou votre éditeur de texte favori, ouvrez votre fichier de bloc serveur Nginx par défaut pour l’édition:

  1. sudo nano /etc/nginx/sites-enabled/default

Trouvez la directive listen, et modifiez-la en listen 443 ssl:

/etc/nginx/sites-enabled/default
…
server {
    listen 443 ssl;
…

Ensuite, recherchez la directive server_name dans le même bloc de serveur et assurez-vous que sa valeur correspond au nom commun de votre certificat. Ajoutez également les directives ssl_certificate et ssl_certificate_key pour spécifier les chemins de vos fichiers de certificat et de clé privée :

/etc/nginx/sites-enabled/default
…
    server_name example.com;
    ssl_certificate /home/sammy/example.com.chained.crt;
    ssl_certificate_key /home/sammy/example.com.key;
…

Pour n’autoriser que les protocoles et les chiffrements SSL les plus sécurisés, ajoutez les lignes suivantes au fichier :

/etc/nginx/sites-enabled/default
…
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…

Enfin, pour rediriger les demandes HTTP vers HTTPS par défaut, vous pouvez ajouter un bloc de serveur supplémentaire en haut du fichier :

/etc/nginx/sites-enabled/default
server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}
…

Enregistrez et fermez le fichier. Si vous utilisez nano, appuyez sur Ctrl+X, puis, lorsque vous y êtes invité, sur Y puis sur Entrée.

Avant de redémarrer Nginx, vous pouvez valider votre configuration en utilisant nginx -t :

  1. sudo nginx -t

S’il n’y a pas de problèmes, redémarrez Nginx pour activer SSL via HTTPS :

  1. sudo systemctl restart nginx

Testez-le en accédant à votre site via HTTPS, par exemple https://example.com. Vous voudrez également essayer de vous connecter via HTTP, par exemple http://example.com pour vous assurer que la redirection fonctionne correctement.

Apache

Voici les étapes pour déployer manuellement un certificat SSL sur Apache.

À l’aide de nano ou de votre éditeur de texte préféré, ouvrez votre fichier de virtual host Apache par défaut pour le modifier :

  1. sudo nano /etc/apache2/sites-available/000-default.conf

Trouvez l’entrée <VirtualHost *:80> et modifiez-la pour que votre serveur Web écoute sur le port 443 :

/etc/apache2/sites-available/000-default.conf
…
<VirtualHost *:443>
…

Ensuite, ajoutez la directive ServerName, si elle n’existe pas déjà:

/etc/apache2/sites-available/000-default.conf
…
ServerName example.com

Ensuite, ajoutez les lignes suivantes pour spécifier les chemins de votre certificat et de votre clé:

/etc/apache2/sites-available/000-default.conf
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt

À ce stade, votre serveur est configuré pour écouter uniquement en HTTPS (port 443), donc les requêtes en HTTP (port 80) ne seront pas servies. Pour rediriger les requêtes HTTP vers HTTPS, ajoutez ce qui suit en haut du fichier (remplacez le nom dans les deux endroits):

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>
…

Enregistrez et fermez le fichier. Si vous utilisez nano, appuyez sur Ctrl+X, puis, lorsqu’on vous y invite, sur Y, puis sur Entrée.

Activez le module SSL d’Apache en exécutant cette commande:

  1. sudo a2enmod ssl

Maintenant, redémarrez Apache pour charger la nouvelle configuration et activer TLS/SSL sur HTTPS.

  1. sudo systemctl restart apache2

Testez en accédant à votre site via HTTPS, par exemple https://example.com. Vous voudrez également essayer de vous connecter via HTTP, par exemple http://example.com, pour vous assurer que la redirection fonctionne correctement.

Conclusion

Dans ce tutoriel, vous avez appris comment déterminer quand vous pourriez avoir besoin d’acheter un certificat SSL auprès d’une autorité de certification commerciale, et comment comparer et contraster les options disponibles. Vous avez également appris comment configurer Nginx ou Apache pour prendre en charge HTTPS, et comment adapter leurs configurations pour la production.

Ensuite, vous voudrez peut-être lire sur d’autres cas d’utilisation SSL, comme lorsque vous travaillez avec des équilibreurs de charge.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority