Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
150-crypt:030_openssl [le 06/06/2025 à 15:56] – [Appel de certbot] prof | 150-crypt:030_openssl [le 08/06/2025 à 15:42] (Version actuelle) – prof | ||
---|---|---|---|
Ligne 22: | Ligne 22: | ||
40: | 40: | ||
Signature Algorithm: sha256WithRSAEncryption | Signature Algorithm: sha256WithRSAEncryption | ||
- | | + | <span class=" |
- | Validity | + | <span class=" |
Not Before: Nov 19 23:00:00 2024 GMT | Not Before: Nov 19 23:00:00 2024 GMT | ||
- | Not After : Nov 19 22:59:59 2025 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, | + | <span class=" |
Subject Public Key Info: | Subject Public Key Info: | ||
Public Key Algorithm: rsaEncryption | Public Key Algorithm: rsaEncryption | ||
- | | + | <span class=" |
Modulus: | Modulus: | ||
00: | 00: | ||
Ligne 49: | Ligne 49: | ||
cd: | cd: | ||
ec:e5 | ec:e5 | ||
- | Exponent: 65537 (0x10001) | + | Exponent: 65537 (0x10001)</ |
X509v3 extensions: | X509v3 extensions: | ||
- | | + | <span class=" |
CA Issuers - URI: | CA Issuers - URI: | ||
CA Issuers - URI: | CA Issuers - URI: | ||
OCSP - URI: | OCSP - URI: | ||
- | OCSP - URI: | + | OCSP - URI: |
X509v3 Authority Key Identifier: | X509v3 Authority Key Identifier: | ||
AC: | AC: | ||
Ligne 160: | Ligne 160: | ||
Plutôt rébarbatif, | Plutôt rébarbatif, | ||
+ | Dans l' | ||
+ | - en jaune, l' | ||
+ | - en orange, le propriétaire du certificat et le(s) domaine(s) qu'il certifie comme légitimes, | ||
+ | - en gris, la clé publique, | ||
+ | - en rouge, les chemins d' | ||
C'est une bonne pratique, que de vérifier les informations des certificats surtout lorsqu' | C'est une bonne pratique, que de vérifier les informations des certificats surtout lorsqu' | ||
- | ====== Mise en œuvre d'une CA avec OpenSSL ====== | ||
- | Sans aller jusqu' | ||
- | |||
- | Nous commençons par créer un répertoire de travail: | ||
- | mkdir /democa | ||
- | cd /democa | ||
- | ===== Le certificat de l' | ||
- | ==== 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: | ||
- | | ||
- | 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 < | ||
- | 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, | ||
- | | ||
- | 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' | ||
- | - ''/ | ||
- | - ''/ | ||
- | - ''/ | ||
- | Pour que notre CA interne puisse être connue des clients potentiels, il faut sur chaque client: | ||
- | - copier le certificat de notre CA dans ''/ | ||
- | - exécuter la commande '' | ||
- | Ceci doit répondre quelque chose du genre: | ||
- | < | ||
- | Updating certificates in / | ||
- | <span class=" | ||
- | Running hooks in / | ||
- | 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' | ||
- | |||
- | ===== Création de sa clé privée ===== | ||
- | < | ||
- | < | ||
- | </ | ||
- | ===== Création de la 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 ' | ||
- | <span class=" | ||
- | ----- | ||
- | Country Name (2 letter code) [AU]:< | ||
- | State or Province Name (full name) [Some-State]:< | ||
- | Locality Name (eg, city) []:< | ||
- | Organization Name (eg, company) [Internet Widgits Pty Ltd]:< | ||
- | Organizational Unit Name (eg, section) []:< | ||
- | Common Name (e.g. server FQDN or YOUR name) []:< | ||
- | Email Address []:< | ||
- | |||
- | Please enter the following ' | ||
- | to be sent with your certificate request | ||
- | <span class = " | ||
- | A challenge password []:<span class = " | ||
- | An optional company name []:<span class = " | ||
- | </ | ||
- | Dans le répertoire de travail, nous retrouvons: | ||
- | < | ||
- | <b>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: | ||
- | < | ||
- | < | ||
- | |||
- | Certificate Request: | ||
- | Data: | ||
- | Version: 1 (0x0) | ||
- | <span class=" | ||
- | Subject Public Key Info: | ||
- | <span class=" | ||
- | Public-Key: (256 bit) | ||
- | pub: | ||
- | 04: | ||
- | ff: | ||
- | 2f: | ||
- | 38: | ||
- | ac: | ||
- | ASN1 OID: prime256v1 | ||
- | NIST CURVE: P-256 | ||
- | Attributes: | ||
- | (none) | ||
- | Requested Extensions: | ||
- | <span class=" | ||
- | Signature Value: | ||
- | 30: | ||
- | 88: | ||
- | 02: | ||
- | 00: | ||
- | </ | ||
- | ===== Demande de certification ===== | ||
- | Il faut maintenant transmettre le CSR à notre CA pour qu' | ||
- | openssl x509 -req -in MyCert.csr -CA / | ||
- | 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' | ||
- | < | ||
- | < | ||
- | |||
- | Certificate: | ||
- | Data: | ||
- | <span class=" | ||
- | Serial Number: | ||
- | 71: | ||
- | 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, | ||
- | Subject Public Key Info: | ||
- | Public Key Algorithm: id-ecPublicKey | ||
- | Public-Key: (256 bit) | ||
- | pub: | ||
- | 04: | ||
- | ff: | ||
- | 2f: | ||
- | 38: | ||
- | ac: | ||
- | ASN1 OID: prime256v1 | ||
- | NIST CURVE: P-256 | ||
- | X509v3 extensions: | ||
- | X509v3 Subject Key Identifier: | ||
- | A4: | ||
- | X509v3 Authority Key Identifier: | ||
- | F6: | ||
- | Signature Algorithm: ecdsa-with-SHA256 | ||
- | Signature Value: | ||
- | 30: | ||
- | d4: | ||
- | 02: | ||
- | 8a: | ||
- | </ | ||
- | La CA a apposé son cachet à la requête, en y ajoutant principalement un numéro de série, l' | ||
- | |||
- | L' | ||
- | ====== Appel à Let's encrypt ====== | ||
- | Les distributions GNU/Linux proposent l' | ||
- | * disposer d'un nom de domaine officiel, | ||
- | * disposer d'un serveur accessible depuis l' | ||
- | |||
- | ===== Champs DNS ===== | ||
- | Pour les besoins de la démonstration, | ||
- | |||
- | Pour les besoins de certbot, des adresses IPv6 suffisent dans la zone «home.nain-t.net», | ||
- | home.nain-t.net. | ||
- | mail.home.nain-t.net. | ||
- | <note tip> | ||
- | ===== 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 [[https:// | ||
- | < | ||
- | < | ||
- | |||
- | Saving debug log to / | ||
- | Requesting a certificate for home.nain-t.net and mail.home.nain-t.net | ||
- | |||
- | <span class=" | ||
- | Certificate is saved at: / | ||
- | Key is saved at: / | ||
- | < | ||
- | These files will be updated when the certificate renews. | ||
- | <span class=" | ||
- | |||
- | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
- | If you like Certbot, please consider supporting our work by: | ||
- | * Donating to ISRG / Let's Encrypt: | ||
- | * Donating to EFF: https:// | ||
- | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
- | </ | ||
- | Si les conditions sont respectées (résolution DNS correcte, port 80 accessible), | ||
- | - Bien que les logs soient plutôt indigestes, ce n'est pas forcément inutile d'y aller faire un tour. | ||
- | - la clé comme le certificat se trouvent dans des fichiers de suffixe «pem» (Privacy Enhancement for internet electronic Mail). Format défini par le [[https:// | ||
- | - 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! | ||
- | - certbot crée une tâche de fond qui se charge de réaliser automatiquement l' | ||
- | - Si nous regardons de près le contenu de ''/ | ||
- | - **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' | ||
- | - **chain.pem** décrit la suite de CA mise en œuvre. | ||
- | - **fullchain.pem** contient toutes les informations. Une concaténation des deux informations précédentes. C'est ce certificat qu'il convient d' | ||
- | |||
- | Si nous regardons son contenu: | ||
- | < | ||
- | < | ||
- | |||
- | Certificate: | ||
- | Data: | ||
- | Version: 3 (0x2) | ||
- | Serial Number: | ||
- | 06: | ||
- | Signature Algorithm: ecdsa-with-SHA384 | ||
- | Issuer: C=US, O=Let' | ||
- | 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: | ||
- | 64: | ||
- | 16: | ||
- | 0d: | ||
- | bb: | ||
- | ASN1 OID: prime256v1 | ||
- | NIST CURVE: P-256 | ||
- | X509v3 extensions: | ||
- | X509v3 Key Usage: critical | ||
- | Digital Signature | ||
- | X509v3 Extended Key Usage: | ||
- | TLS Web Server Authentication, | ||
- | X509v3 Basic Constraints: | ||
- | CA:FALSE | ||
- | X509v3 Subject Key Identifier: | ||
- | 52: | ||
- | X509v3 Authority Key Identifier: | ||
- | 9F: | ||
- | Authority Information Access: | ||
- | OCSP - URI: | ||
- | CA Issuers - URI: | ||
- | X509v3 Subject Alternative Name: | ||
- | DNS: | ||
- | X509v3 Certificate Policies: | ||
- | Policy: 2.23.140.1.2.1 | ||
- | X509v3 CRL Distribution Points: | ||
- | Full Name: | ||
- | URI: | ||
- | |||
- | CT Precertificate SCTs: | ||
- | Signed Certificate Timestamp: | ||
- | Version | ||
- | Log ID : ED: | ||
- | 01: | ||
- | Timestamp : Apr 29 07: | ||
- | Extensions: none | ||
- | Signature : ecdsa-with-SHA256 | ||
- | 30: | ||
- | 0E: | ||
- | 9D: | ||
- | 04: | ||
- | 17: | ||
- | Signed Certificate Timestamp: | ||
- | Version | ||
- | Log ID : DD: | ||
- | 3D: | ||
- | Timestamp : Apr 29 07: | ||
- | Extensions: none | ||
- | Signature : ecdsa-with-SHA256 | ||
- | 30: | ||
- | 5F: | ||
- | 21: | ||
- | 9F: | ||
- | FB: | ||
- | Signature Algorithm: ecdsa-with-SHA384 | ||
- | Signature Value: | ||
- | 30: | ||
- | e3: | ||
- | eb: | ||
- | 00: | ||
- | a4: | ||
- | fa: | ||
- | </ | ||
Les certificats X509: Dernière modification le: 06/06/2025 à 15:56 par prof