Outils pour utilisateurs

Outils du site


Ceci est une ancienne révision du document !


Les certificats X509

Openssl est le cœur du chiffrement utilisé avec SSL/TLS dans les logiciels libres et pas seulement.

Commençons par regarder la structure d'un certificat X509, puis nous en construirons avec openSSL et finirons en utilisant les services de Let's encrypt pour réaliser un certificat utilisable aussi bien pour assurer du https public que pour sécuriser un système de messagerie.

Structure

Un certificat X.509 contient plusieurs éléments essentiels :

  • Numéro de version : Indique la version du certificat.
  • Numéro de série : Identifiant unique attribué par l’autorité de certification.
  • Algorithme de signature : L’algorithme utilisé pour signer le certificat.
  • Émetteur : L’autorité ayant émis le certificat.
  • Validité : Les dates de début et de fin de validité du certificat.
  • Sujet : L’identité à laquelle le certificat est associé (un utilisateur, un domaine…).
  • Clé publique : La clé publique associée au sujet.
  • Extensions : Informations supplémentaires suivant l'utilité du certificat.

Un exercice pratique intéressant pour ne pas dire primordial, consiste à décortiquer le contenu d'un certificat X509 fourni par un site web https, pourquoi pas celui-ci: Le cadenas (avec Firefox. D'autres grigris peuvent apparaître suivant le navigateur) indique que la connexion est sécurisée et un clic sur ce cadenas, après quelques étapes, permet d’observer le détail du certificat x509. Voici des extraits de son contenu:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            40:40:17:57:0c:8d:62:ee:ad:e6:63:15:28:03:59:4d
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = FR, O = DHIMYOTIS, OU = 0002 48146308100036, organizationIdentifier = NTRFR-48146308100036, CN = Certigna Services CA
        Validity
            Not Before: Nov 19 23:00:00 2024 GMT
            Not After : Nov 19 22:59:59 2025 GMT
        Subject: C = FR, L = PARIS, O = DIRECTION DES SERVICES ADMINISTRATIFS ET FINANCIERS, CN = info.gouv.fr, serialNumber = S328360770
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b1:ac:14:ed:8f:8c:64:dc:14:84:0d:97:db:56:
                    ba:77:14:3a:bd:67:4f:05:27:72:a8:a3:5f:e8:59:
                    eb:b2:0b:dc:ad:15:3e:6d:19:60:24:98:bc:ef:8d:
                    46:b1:73:88:b9:00:4b:56:72:09:f7:81:71:0f:5b:
                    89:90:b9:83:c0:23:72:35:71:d2:79:d4:8d:fb:1b:
                    db:b1:17:3d:14:25:1d:83:a6:23:79:da:13:80:4f:
                    a9:b3:4b:7a:49:86:c4:eb:4c:c7:f3:5e:a1:01:e9:
                    4d:b3:be:54:7e:98:50:d0:b3:74:4a:c4:75:bb:a2:
                    3f:b8:06:1c:68:05:ac:dd:8d:ff:f4:6a:69:38:92:
                    62:e8:85:61:c3:08:e2:fd:e5:49:b1:df:ba:a4:eb:
                    6d:11:8b:ef:08:29:66:26:91:79:ce:44:c3:4c:9c:
                    47:d3:23:20:98:9a:f3:43:1a:d1:28:d3:02:9d:a1:
                    b2:f8:09:86:06:c4:93:62:74:7d:0a:01:db:3f:37:
                    5c:59:e9:77:24:5c:9a:7e:bc:23:34:91:d5:b0:34:
                    00:4b:55:bb:89:75:36:9d:0c:71:07:b1:73:c6:f5:
                    21:3c:0a:5a:8d:46:17:1a:98:6c:1f:bd:6c:87:c6:
                    cd:07:5a:0c:cf:ca:c9:20:5e:3a:7f:86:5b:36:1c:
                    ec:e5
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            Authority Information Access: 
                CA Issuers - URI:http://autorite.dhimyotis.com/servicesca.der
                CA Issuers - URI:http://autorite.certigna.fr/servicesca.der
                OCSP - URI:http://servicesca.ocsp.certigna.fr
                OCSP - URI:http://servicesca.ocsp.dhimyotis.com
            X509v3 Authority Key Identifier: 
                AC:EC:86:8F:4B:37:1C:B8:7F:17:1B:19:D0:AE:E8:4E:E3:34:5C:12
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Certificate Policies: 
                Policy: 2.23.140.1.2.2
                Policy: 1.2.250.1.177.2.5.1.1.1
                  CPS: https://www.certigna.com/autorite-certification
            X509v3 CRL Distribution Points: 
                Full Name:
                  URI:http://crl.dhimyotis.com/servicesca.crl
                Full Name:
                  URI:http://crl.certigna.fr/servicesca.crl
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:www.info.gouv.fr, DNS:info.gouv.fr, DNS:recherche.info.gouv.fr, DNS:barometre.info.gouv.fr
            X509v3 Subject Key Identifier: 
                24:19:9E:A8:35:F0:12:9F:82:42:C7:4F:F0:DE:B0:CD:B7:F4:9F:DD
            CT Precertificate SCTs: 
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : 0D:E1:F2:30:2B:D3:0D:C1:40:62:12:09:EA:55:2E:FC:
                                47:74:7C:B1:D7:E9:30:EF:0E:42:1E:B4:7E:4E:AA:34
                    Timestamp : Nov 20 14:40:13.804 2024 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:75:81:E1:C8:F0:4D:AE:B6:E4:58:F9:5E:
                                4A:51:24:62:11:0F:36:14:C3:9F:99:3F:18:5E:64:C2:
                                2E:A6:C1:F3:02:21:00:83:01:08:89:93:52:68:0F:96:
                                FA:EF:C3:ED:B1:62:D9:DE:3C:0C:11:76:5E:06:B5:81:
                                03:F7:42:79:82:67:3E
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : DD:DC:CA:34:95:D7:E1:16:05:E7:95:32:FA:C7:9F:F8:
                                3D:1C:50:DF:DB:00:3A:14:12:76:0A:2C:AC:BB:C8:2A
                    Timestamp : Nov 20 14:40:13.308 2024 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:44:02:20:45:E1:58:DF:EF:32:41:4B:DA:38:AA:26:
                                F6:82:39:2C:CA:7F:1B:73:9B:2A:77:B2:4D:AC:E6:47:
                                78:58:E5:F5:02:20:0A:8B:C1:60:3E:E5:F7:63:39:B8:
                                EA:CB:3F:71:8F:FF:E3:9A:C4:C6:4B:81:D6:6A:4C:83:
                                D9:82:62:96:20:F5
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : E6:D2:31:63:40:77:8C:C1:10:41:06:D7:71:B9:CE:C1:
                                D2:40:F6:96:84:86:FB:BA:87:32:1D:FD:1E:37:8E:50
                    Timestamp : Nov 20 14:40:13.803 2024 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:46:02:21:00:B2:B3:8D:04:61:9C:DF:9D:72:E3:01:
                                58:ED:84:89:45:CA:0A:52:0A:36:F1:89:56:6E:45:3E:
                                41:D7:D3:B2:64:02:21:00:C5:B6:69:52:E6:9E:04:B7:
                                25:72:C6:42:5A:77:6B:30:0F:EB:D5:E0:45:0D:00:5B:
                                6A:B7:C1:78:CD:32:5E:9B
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : AF:18:1A:28:D6:8C:A3:E0:A9:8A:4C:9C:67:AB:09:F8:
                                BB:BC:22:BA:AE:BC:B1:38:A3:A1:9D:D3:F9:B6:03:0D
                    Timestamp : Nov 20 14:40:13.419 2024 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:64:C6:D3:84:1E:5B:9B:44:49:F9:05:0D:
                                CB:19:37:D0:CF:BC:3D:D1:49:08:D4:31:8B:00:67:7B:
                                72:78:19:2B:02:21:00:A3:A1:59:64:75:2B:4E:EB:9C:
                                3B:13:92:ED:2A:16:49:14:D6:32:78:35:25:E3:54:BD:
                                B3:50:B8:91:74:B3:63
    Signature Algorithm: sha256WithRSAEncryption
    Signature Value:
        61:a1:4f:c3:a7:f2:16:0d:12:2a:c2:67:55:f7:e6:aa:72:5e:
        7d:6b:b1:dd:48:55:d8:33:4f:d4:b9:6f:2f:2f:87:80:1c:e5:
        34:aa:1a:0f:1f:67:77:ca:6f:eb:e4:14:81:14:d8:fd:24:1d:
        ef:bd:6f:b9:7c:fe:20:5e:66:05:ab:b4:9b:4b:d7:87:40:58:
        ed:a5:8f:d9:59:f0:3e:22:f6:de:93:a5:1a:82:61:76:16:63:
        9c:e1:dc:f4:04:53:2d:b1:e6:b1:e4:2e:7e:01:3b:d1:bd:09:
        b7:5c:4f:9a:13:d8:f4:44:b1:af:fb:ef:31:6b:71:8f:a1:81:
        5f:19:fa:99:b4:4a:c5:64:30:58:ae:bc:29:88:05:ae:a2:18:
        8a:5e:6a:46:9c:cf:35:13:1e:c8:94:9b:53:b0:2f:da:49:b4:
        32:6f:30:6c:6a:a1:46:07:3f:3f:fa:eb:8e:4b:09:e3:c6:b0:
        bd:e2:96:91:e3:68:d3:47:41:9b:68:c8:3d:e9:82:eb:d7:9a:
        ad:75:d7:b9:ac:79:e8:c9:d6:62:76:ae:7c:ee:47:ae:95:88:
        72:9a:fe:2c:b2:46:f5:de:ed:fb:72:f2:ab:15:f4:47:de:12:
        16:ce:20:34:16:3b:2a:36:72:eb:a6:3c:49:db:2a:b6:fa:aa:
        bc:c8:38:ae:34:40:3e:b3:0d:a1:05:32:82:37:16:9c:3f:9b:
        08:14:82:2a:e4:df:e0:db:9f:1e:50:61:a7:65:4f:cb:af:f6:
        a4:4c:cc:d1:27:7e:08:a9:55:44:5f:78:78:5e:8d:4c:40:43:
        49:6c:40:0d:b5:ea:f1:b8:b3:5e:62:94:86:8c:4b:29:fc:f4:
        9a:29:6b:72:da:e0:64:0f:e7:57:5d:66:b2:45:24:6e:69:92:
        93:34:7d:ad:d0:54:b2:02:f1:2a:65:df:93:f8:f0:3b:04:3b:
        fb:4b:17:0c:8f:4d:ab:39:2b:69:be:fa:b8:26:0c:a2:d9:c4:
        64:92:6c:b9:d8:f5:55:60:35:b8:4a:84:f0:4e:bc:91:ae:ae:
        cd:62:12:c2:d4:11:cc:0d:cb:38:15:52:2b:5c:15:92:49:0e:
        d1:2d:2e:3c:55:94:9e:a7:29:62:b5:5b:6e:de:69:67:d7:3f:
        8d:ae:56:ca:87:d2:da:30:57:0b:b4:e6:13:32:20:68:9a:10:
        5f:5a:2d:ca:c8:25:95:2a:cd:d6:f7:2b:ab:18:16:25:b2:0e:
        ba:e8:39:1e:58:17:5c:99:bb:04:0a:0b:20:19:d0:5d:b0:e9:
        1f:01:59:5a:92:4d:ff:5a:ce:70:65:a1:c9:fe:b2:30:da:77:
        83:47:a9:65:7e:ac:4b:71
Plutôt rébarbatif, mais les plus courageux retrouveront les principales informations, aussi bien concernant les divers chiffrements, hachages utilisés que concernant le propriétaire du certificat et l'autorité qui l'a signé.

C'est une bonne pratique, que de vérifier les informations des certificats surtout lorsqu'il s'agit de sites marchands ou nécessitant de donner des informations à caractère personnel (login, mot de passe, etc.). Normalement, un certificat périmé, répudié, auto-signé ou signé par une CA inconnue du système doit déclencher une alarme, sauf si le système de l'utilisateur a été compromis.

Mise en œuvre d'une CA avec OpenSSL

Sans aller jusqu'à réaliser une PKI complète, nous allons réaliser une autorité de certification auto-signée. Elle permettra de réaliser des certificats au format X509 à usage interne uniquement bien sûr. L'objectif étant surtout ici de comprendre le mécanisme. Tout va se faire avec les privilèges «root»

Nous commençons par créer un répertoire de travail:

mkdir /democa
cd /democa

Le certificat de l'autorité

Réalisation d'une clé privée

Il faut une clé privée, propriété exclusive de la CA. C'est elle qui permettra de signer les certificats que notre CA va émettre. Créons une clé ECDSA (Elliptic Curve Digital Signature Algorithm) de 256 bits :

openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out democa.key

La clé privée ne doit pouvoir être lue que par «root». Les bons droits ont été normalement attribués. Si ce n'est pas le cas:

chown <root>:<root> democa.key
chmod 600 democa.key  

Réalisation de la clé publique

Créons maintenant un certificat X509 qui va contenir la clé publique associée à notre CA. Ce certificat servira aux clients de la CA de vérifier que les certificats demandés sont bien authentiques (chiffrement avec la clé privée = signature, déchiffrement au moyen de la clé publique pour authentifier la signature).

openssl req -key democa.key -new -x509 -days 3650 -addext keyUsage=critical,keyCertSign,cRLSign -subj "/CN=myca" -out democa.crt

Ce sertificat sera valide depuis sa date de création et pour une durée de 3650 jours soit en gros en peu moins de 10 ans. Le certificat devra être communiqué à tous les clients potentiels, qui devront l'ajouter à leur liste de confiance. Ici, tout dépendra de la distribution GNU/Linux. Sur Debian, le paquet ca-certificates installe et maintient les autorités de certification connues du système. Il y en a un peu partout:

  1. /etc/ssl/certs contient les certificats des CA officielles et mondialement connues,
  2. /usr/share/ca-certificates/ contient des certificats proposés par la fondation Mozilla
  3. /usr/local/share/ca-certificate par défaut ne continent rien, mais il est possible ici d'ajouter le certificat de notre CA interne

Pour que notre CA interne puisse être connue des clients potentiels, il faut sur chaque client:

  1. copier le certificat de notre CA dans /usr/local/share/ca-certificates/
  2. exécuter la commande update-ca-certificates

Ceci doit répondre quelque chose du genre:

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

Les demandes de certificats

une PKY digne de ce nom propose à ses clients une interface permettant de construire leur requête. Le but étant ici de faire la preuve du concept, l'administrateur construira lui-même la requête pour ses clients. La construction d'un CSR («Certificat Signing Request»,demande de signature de certificat) ne nécessite aucun privilège particulier.

Création de sa clé privée

openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out MyPrivate.key

Création de la CSR

openssl req -key MyPrivate.key  -new -out MyCert.csr

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.
# Suit donc une liste de questions:
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:PACA
Locality Name (eg, city) []:Marseille
Organization Name (eg, company) [Internet Widgits Pty Ltd]:experiences diverses
Organizational Unit Name (eg, section) []:informatique
Common Name (e.g. server FQDN or YOUR name) []:monserveur.mondomaine.tld
Email Address []:sysop@mondomaine.tld

Please enter the following 'extra' attributes
to be sent with your certificate request
 Nous allons nous en passer...
A challenge password []:Cette entrée est obsolète. Laisser vide
An optional company name []: Nous allons aussi nous en passer...
Dans le répertoire de travail, nous retrouvons:
ls -l

total 12
-rw-rw-r-- 1 user user  570  2 juin  18:54 MyCert.csr
-rw------- 1 user user  241  2 juin  18:48 MyPrivate.key
Le créateur de la requête peut en vérifier le contenu:
openssl req -in MyCert.csr -noout -text

Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=FR, ST=PACA, L=Marseille, O=experiences diverses, OU=informatique, CN=monserveur.mondomaine.tld, emailAddress=sysop@mondomaine.tld
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:47:57:1c:53:be:22:87:2f:95:bc:4a:de:9a:98:
                    ff:4e:96:83:e8:70:eb:20:c8:c4:ac:ff:72:f4:94:
                    2f:13:a3:d5:11:e4:81:3b:42:06:54:f5:78:03:55:
                    38:60:31:7f:f9:4e:31:79:35:43:fe:ea:37:e2:22:
                    ac:d5:07:91:9a
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            (none)
            Requested Extensions:
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:44:02:20:2e:e5:52:58:27:c4:9b:2c:0d:78:ce:3d:76:56:
        88:5b:90:6b:ea:e9:8a:e3:4d:bb:9d:f9:63:a3:b9:f4:2a:19:
        02:20:23:49:1a:10:c1:24:5b:5e:80:b2:76:62:85:17:5b:d4:
        00:0f:0a:1a:b9:75:20:89:ec:9c:a3:aa:6b:2c:ad:5c

Demande de certification

Il faut maintenant transmettre le CSR à notre CA pour qu'elle la signe. Privilèges «root» nécessaires, puisque le certificat doit être signé avec la clé privée de la CA, qui n'est utilisable que par «root».

openssl x509 -req -in MyCert.csr -CA /democa/democa.crt -CAkey /democa/democa.key  -days 365 -out MyCert.crt

Certificate request self-signature ok La CA octroie un certificat valide pour 365 jours. Cette durée ne peut dépasser la date de validité du certificat de la CA, pour des raisons évidentes.

L'utilisateur dispose alors de la possibilité de vérifier son certificat:

openssl x509 -in MyCert.crt -noout -text

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            71:de:eb:c1:51:34:6a:3b:19:a5:7b:6a:33:d9:e2:f9:e3:b4:60:97
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN=myca
        Validity
            Not Before: Jun  5 15:21:19 2025 GMT
            Not After : Jun  5 15:21:19 2026 GMT
        Subject: C=FR, ST=PACA, L=Marseille, O=experiences diverses, OU=informatique, CN=monserveur.mondomaine.tld, emailAddress=sysop@mondomaine.tld
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:47:57:1c:53:be:22:87:2f:95:bc:4a:de:9a:98:
                    ff:4e:96:83:e8:70:eb:20:c8:c4:ac:ff:72:f4:94:
                    2f:13:a3:d5:11:e4:81:3b:42:06:54:f5:78:03:55:
                    38:60:31:7f:f9:4e:31:79:35:43:fe:ea:37:e2:22:
                    ac:d5:07:91:9a
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                A4:5B:99:F9:76:DB:89:33:AB:08:20:A9:FC:19:17:D8:70:62:3E:53
            X509v3 Authority Key Identifier: 
                F6:7D:5C:47:14:06:B4:A3:B1:EE:F8:A2:A6:0F:0C:8F:59:79:06:C6
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:45:02:20:6c:05:b4:ef:0d:52:a9:89:d1:ae:4f:8b:89:a9:
        d4:b8:44:42:75:ab:77:0e:4a:40:6c:fd:6f:ee:02:68:a2:43:
        02:21:00:d1:a2:4c:83:8f:3c:d9:fd:c5:61:c0:8a:40:8d:9f:
        8a:49:e6:3b:e9:21:69:a9:90:6a:3c:f5:8a:d5:ea:e9:25
La CA a apposé son cachet à la requête, en y ajoutant principalement un numéro de série, l'identité de la CA et la durée de validité.

L'utilisateur peut désormais utiliser SSL/TLS pour sa messagerie, son site web, en produisant son certificat, validé par une CA, pour permettre le déchiffrement de la signature. Mais ici, le système ne restera opérationnel qu'au sein de l'entreprise. Pour un usage sur l'internet, il faut faire signer sa requête par une PKI officielle.

Appel à Let's encrypt

Les distributions GNU/Linux proposent l'outil certbot qui permet facilement de réaliser un CSR et de demander sa signature à «Let's Encrypt». Il y a bien évidemment quelques conditions à remplir:

  • disposer d'un nom de domaine officiel,
  • disposer d'un serveur accessible depuis l'internet, référencé par le serveur DNS de la zone.

Champs DNS

Pour les besoins de la démonstration, un sous-domaine «home.nain-t.net» ainsi qu'un hôte «mail.home.nain-t.net». Nous allons obtenir de la part de Let's encrypt, un certificat X509 qui pourra être utilisé pour exploiter TLS aussi bien avec un serveur web que smtp.

Pour les besoins de certbot, des adresses IPv6 suffisent dans la zone «home.nain-t.net», mais avec des adresses IPv4 ça fonctionnerait bien sûr aussi.

home.nain-t.net.      	AAAA 	2a01:e0a:875:b1d0::10
mail.home.nain-t.net.  	AAAA 	2a01:e0a:875:b1d0::10
«mail.home.nain-t.net» pourrait être un alias de «home.nain-t.net» du point de vue DNS. Cependant, nous verrons qu'il n'en est pas forcément de même pour le bon fonctionnement de SMTP.

Appel de certbot

Il est nécessaire que la CA puisse accéder à un serveur http implanté sur le demandeur. Si ce n'est pas le cas, certbot peut créer un mini serveur http temporaire, ce qui sera le cas ici.

Tous les paramètres utilisables avec la commande «certbot» sont détaillés dans le manuel et sur le site officiel.

certbot certonly --standalone -d home.nain-t.net. -d mail.home.nain-t.net.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for home.nain-t.net and mail.home.nain-t.net

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/home.nain-t.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/home.nain-t.net/privkey.pem
This certificate expires on 2025-07-28.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Si les conditions sont respectées (résolution DNS correcte, port 80 accessible), le certificat doit être validé. Il y a plusieurs choses à éclaircir:

  1. Bien que les logs soient plutôt indigestes, ce n'est pas forcément inutile d'y aller faire un tour.
  2. la clé comme le certificat se trouvent dans des fichiers de suffixe «pem» (Privacy Enhancement for internet electronic Mail). Format défini par le RFC 1422. Sa particularité étant de pouvoir empaqueter aussi bien une clé publique qu'une clé privée ou même les deux ensemble. Généralement, il vaut mieux stocker la clé privée à part.
  3. Let's Encrypt fournit des certificats d'une durée de validité de 3 mois. Il est donc nécessaire de penser à les renouveler avant expiration!
  4. certbot crée une tâche de fond qui se charge de réaliser automatiquement l'opération dans une «crontab» située dans /etc/cron.d/ chez Debian.
  5. Si nous regardons de près le contenu de /etc/letsencrypt/live/home.nain-t.net/ nous trouvons bien plus de 2 fichiers au format «pem». En réalité nous avons:
    1. cert.pem est le certificat lui-même. Mais contrairement à notre essai de CA interne, Let's Encrypt n'est pas une CA «racine» Elle est elle-même certifiée par d'autres CA.
    2. chain.pem décrit la suite de CA mise en œuvre.
    3. fullchain.pem contient toutes les informations. Une concaténation des deux informations précédentes. C'est ce certificat qu'il convient d'exhiber aux clients.

Si nous regardons son contenu:

openssl x509 -in fullchain.pem -noout -text

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            06:87:a5:dd:2b:61:33:af:1b:e8:0c:c6:1f:86:ec:d0:c1:b8
        Signature Algorithm: ecdsa-with-SHA384
        Issuer: C=US, O=Let's Encrypt, CN=E5
        Validity
            Not Before: Apr 29 06:30:54 2025 GMT
            Not After : Jul 28 06:30:53 2025 GMT
        Subject: CN=home.nain-t.net
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:c0:c7:1b:d7:0c:54:cb:69:9c:63:58:dd:c1:f1:
                    64:4c:6c:f7:1d:0f:df:36:fb:68:60:83:f2:61:87:
                    16:13:8f:bd:0a:6a:1d:b2:73:af:99:69:18:f1:33:
                    0d:a3:0b:0d:49:a5:3f:e2:2c:a0:18:99:15:24:ef:
                    bb:be:80:47:92
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier: 
                52:E7:A7:68:16:22:64:6B:AD:4D:55:E4:E0:9F:C5:88:5A:C0:F3:4B
            X509v3 Authority Key Identifier: 
                9F:2B:5F:CF:3C:21:4F:9D:04:B7:ED:2B:2C:C4:C6:70:8B:D2:D7:0D
            Authority Information Access: 
                OCSP - URI:http://e5.o.lencr.org
                CA Issuers - URI:http://e5.i.lencr.org/
            X509v3 Subject Alternative Name: 
                DNS:home.nain-t.net, DNS:mail.home.nain-t.net
            X509v3 Certificate Policies: 
                Policy: 2.23.140.1.2.1
            X509v3 CRL Distribution Points: 
                Full Name:
                  URI:http://e5.c.lencr.org/57.crl

            CT Precertificate SCTs: 
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : ED:3C:4B:D6:E8:06:C2:A4:A2:00:57:DB:CB:24:E2:38:
                                01:DF:51:2F:ED:C4:86:C5:70:0F:20:DD:B7:3E:3F:E0
                    Timestamp : Apr 29 07:29:24.364 2025 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:44:02:20:73:4E:F3:F2:31:E8:D7:72:3E:99:EE:34:
                                0E:6C:62:D4:5C:16:0B:DB:01:A2:37:C0:9B:F1:8E:BE:
                                9D:B6:26:09:02:20:3A:E5:BC:CF:34:2D:48:2A:F6:C0:
                                04:D6:05:97:0D:41:09:BB:D4:68:B9:99:32:1A:66:D6:
                                17:69:9B:47:ED:F8
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : DD:DC:CA:34:95:D7:E1:16:05:E7:95:32:FA:C7:9F:F8:
                                3D:1C:50:DF:DB:00:3A:14:12:76:0A:2C:AC:BB:C8:2A
                    Timestamp : Apr 29 07:29:24.414 2025 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:4A:B7:A7:63:49:0C:A9:31:5E:79:07:8B:
                                5F:B0:01:D7:08:01:3D:AD:CF:0B:83:E8:83:D6:C2:94:
                                21:7F:FC:F5:02:21:00:CC:24:BA:7A:0E:5C:37:AB:F0:
                                9F:24:73:0C:AB:0F:A2:24:71:52:17:26:37:01:7C:EB:
                                FB:B8:AB:3C:08:FB:4F
    Signature Algorithm: ecdsa-with-SHA384
    Signature Value:
        30:65:02:30:4c:d3:83:6c:7a:5f:36:67:4b:ff:b6:99:56:58:
        e3:c4:3c:28:bd:f0:06:a8:1c:03:ef:a2:bf:27:70:0e:0d:ac:
        eb:82:45:78:1c:64:fa:f7:0f:3b:db:ce:38:da:a3:29:02:31:
        00:e5:39:c1:df:3a:b2:6f:96:68:51:fb:49:bc:6a:13:b7:bc:
        a4:2b:c3:30:e7:41:e8:af:a0:4e:fa:57:43:2c:cc:e2:f6:61:
        fa:5c:49:7e:45:0e:bf:e6:a0:cd:72:a6:91

Les certificats X509: Dernière modification le: 06/06/2025 à 15:56 par prof