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 à 14:14] – [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' | ||
Les certificats X509: Dernière modification le: 06/06/2025 à 14:14 par prof