Renouveler un certificat acheté

Ce guide décrit en détail comment un nouveau certificat SSL émis par une autorité de certification (AC) est préparé pour le serveur Relution, puis mis en place pour Traefik ou nginx. Il s’adresse aux administrateurs qui effectuent cette procédure pour la première fois ou rarement. Une vue d’ensemble de toutes les variantes d’installation figure dans Renouveler le certificat SSL →.

À l’issue de la procédure, deux fichiers sont disponibles :

  • server.pem – la chaîne de certificats : le certificat du serveur, suivi des certificats intermédiaires de l’autorité de certification.
  • server.key – la clé privée correspondant au certificat du serveur.

Les étapes 1 à 5 s’appliquent à toute installation. L’étape 6 renvoie au guide du proxy inverse utilisé, qui décrit la mise en place des fichiers, le redémarrage et la vérification finale.


1. Convertir le certificat au format PEM

Les autorités de certification fournissent les certificats dans différents formats, souvent avec les extensions .crt, .cer, .pem, .p7b ou .pfx. Le proxy inverse (Traefik ou nginx) attend le certificat au format PEM, c’est-à-dire sous forme de fichier texte au contenu encodé en Base64.

Le format PEM se reconnaît en ouvrant le fichier, par exemple dans un éditeur de texte ou avec la commande suivante :

head -1 certificat.crt

Si la première ligne est -----BEGIN CERTIFICATE-----, le certificat est déjà au format PEM. Il est enregistré sous le nom server-cert.pem (par exemple avec cp certificat.crt server-cert.pem), puis la procédure se poursuit à l’étape 2. Si la première ligne est -----BEGIN PKCS7----- ou si le fichier affiche des caractères illisibles, il est converti avec OpenSSL selon son format :

FormatExtension typiqueConversion
DER (binaire).cer, .crt, .deropenssl x509 -inform der -in certificat.cer -out server-cert.pem
PKCS#7.p7b, .p7copenssl pkcs7 -inform der -print_certs -in certificat.p7b -out server-cert.pem
PKCS#12.pfx, .p12voir Convertir un certificat en PEM →

Si un fichier P7B commence par -----BEGIN PKCS7-----, il est déjà sous forme de texte ; l’option -inform der est alors omise dans la commande.

Outre le certificat, un fichier PFX ou P12 contient généralement aussi la clé privée et les certificats intermédiaires. Après la conversion décrite dans Convertir un certificat en PEM →, les fichiers server.pem et server.key sont déjà disponibles. Les étapes 2 et 3 ainsi que la combinaison de l’étape 4 sont omises ; la procédure se poursuit avec la vérification de la chaîne à la fin de l’étape 4. S’il y manque des certificats intermédiaires, ceux-ci sont obtenus comme décrit à l’étape 3 et ajoutés à la fin de server.pem. La clé est ensuite vérifiée comme décrit à l’étape 5.

Les lignes telles que subject=…, issuer=… ou Bag Attributes placées avant les certificats proviennent de la conversion avec OpenSSL. Elles ne gênent généralement pas et peuvent rester dans le fichier.


2. Vérifier la structure du certificat du serveur

Après la conversion d’un fichier contenant un seul certificat (DER ou PEM), le fichier server-cert.pem contient exactement un certificat, celui du serveur :

server-cert.pem
-----BEGIN CERTIFICATE-----
MIIGfjCCBWagAwIBAgIQD7S2kpX0nBq3Wc...
(certificat du serveur, plusieurs lignes de texte encodé en Base64)
...7TQxLm1Bxq2fJZ0wS9YQ==
-----END CERTIFICATE-----

La commande suivante indique pour quel nom de serveur le certificat a été émis, par qui et jusqu’à quelle date il est valide :

openssl x509 -in server-cert.pem -noout -subject -issuer -enddate
openssl x509 -in server-cert.pem -noout -text | grep -A1 "Subject Alternative Name"

Le nom d’hôte de l’URL externe du serveur Relution doit figurer comme entrée DNS: sous X509v3 Subject Alternative Name. La ligne issuer indique l’autorité de certification dont le certificat intermédiaire est nécessaire à l’étape suivante.


3. Obtenir les certificats intermédiaires de l’autorité de certification

Le certificat du serveur n’est pas signé directement par le certificat racine de l’autorité de certification, mais par un ou plusieurs certificats intermédiaires. Pour que les appareils et les clients fassent confiance au certificat du serveur, le proxy inverse doit également fournir ces certificats intermédiaires.

Les certificats intermédiaires peuvent être obtenus de plusieurs manières :

  • Livraison de l’autorité de certification : ils sont souvent joints à la livraison du certificat, par exemple sous la forme intermediate.crt, ca-bundle.crt ou chain.pem.

  • Site web de l’autorité de certification : les autorités de certification mettent leurs certificats intermédiaires à disposition en téléchargement. Le certificat intermédiaire pertinent est celui dont le nom correspond à la ligne issuer de l’étape 2.

  • Référence dans le certificat : la plupart des certificats de serveur contiennent une adresse de téléchargement du certificat intermédiaire émetteur (CA Issuers) :

    openssl x509 -in server-cert.pem -noout -text | grep "CA Issuers"
    

    Le fichier ainsi téléchargé est souvent au format DER et est converti en PEM comme décrit à l’étape 1.

Le certificat racine de l’autorité de certification n’est pas nécessaire ; il est déjà présent sur les appareils.


4. Combiner le certificat du serveur et les certificats intermédiaires

Le certificat du serveur et les certificats intermédiaires sont réunis dans un seul fichier server.pem. L’ordre est déterminant : d’abord le certificat du serveur, puis les certificats intermédiaires. S’il existe plusieurs certificats intermédiaires, celui qui a émis le certificat du serveur vient en premier, suivi du certificat de niveau supérieur.

cat server-cert.pem intermediate.pem > server.pem

Le fichier final est structuré comme suit :

server.pem
-----BEGIN CERTIFICATE-----
MIIGfjCCBWagAwIBAgIQD7S2kpX0nBq3Wc...
(certificat du serveur)
...7TQxLm1Bxq2fJZ0wS9YQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEyDCCA7CgAwIBAgIQDPW9BitWAvR6uF...
(certificat intermédiaire)
...kXmcO7hOt9fyQXaU2Xg2Ug==
-----END CERTIFICATE-----

Chaque marqueur -----BEGIN CERTIFICATE----- et -----END CERTIFICATE----- se trouve sur une ligne distincte. Si un fichier source ne se termine pas par un saut de ligne, -----END CERTIFICATE----------BEGIN CERTIFICATE----- se retrouve sur une seule ligne lors de la combinaison, et le proxy inverse ne peut alors pas charger le certificat. Dans ce cas, un saut de ligne est inséré à cet endroit dans un éditeur de texte.

La commande suivante permet de vérifier que la chaîne est complète. Elle liste dans l’ordre tous les certificats du fichier avec leur titulaire (subject) et leur émetteur (issuer) :

openssl crl2pkcs7 -nocrl -certfile server.pem | openssl pkcs7 -print_certs -noout

L’issuer de chaque certificat correspond au subject du suivant. L’issuer du dernier certificat est le certificat racine de l’autorité de certification. Si le certificat racine lui-même figure dans le fichier (reconnaissable à un subject et un issuer identiques), il n’est pas nécessaire et peut être supprimé dans un éditeur de texte, avec son bloc de -----BEGIN CERTIFICATE----- à -----END CERTIFICATE-----.


5. Vérifier la clé privée

En plus de server.pem, la clé privée générée lors de la création de la demande de signature de certificat (CSR) est nécessaire. Si le nouveau certificat a été émis avec la même CSR que le précédent, le fichier server.key existant reste inchangé.

La clé privée doit être au format PEM et sans mot de passe, car le proxy inverse ne peut pas demander de mot de passe au démarrage. La première ligne est alors -----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY----- ou -----BEGIN EC PRIVATE KEY-----. Si elle est -----BEGIN ENCRYPTED PRIVATE KEY----- ou si elle est suivie d’une ligne Proc-Type: 4,ENCRYPTED, la clé est protégée par un mot de passe. Le mot de passe est alors supprimé (il est demandé lors de l’opération) :

openssl pkey -in key.pem -out server.key

La comparaison des deux sommes de contrôle indique si le certificat et la clé vont ensemble ; elles doivent être identiques :

openssl x509 -in server.pem -noout -pubkey | openssl sha256
openssl pkey -in server.key -pubout | openssl sha256

6. Mettre en place le certificat dans le proxy inverse

Avec server.pem et server.key, le certificat est mis en place dans le proxy inverse de l’installation. Avant le remplacement, les fichiers server.pem et server.key existants sont sauvegardés afin de pouvoir être restaurés en cas de problème. Chaque guide décrit la mise en place des fichiers, le redémarrage et la vérification finale :

Top