Commandes:Génération d'un certificat SSL de l'autorité de certification
Sommaire
But
L'autorité de certification permet de certifier des certificats x509. Il est très utile pour des besoins internes ou pour des accès venant de l'extérieur. Mais il ne convient pas du tout pour certifier des sites web. Dans ce cas mieux vaut passer par des autorités de certifications comme VeriSign qui sont déjà installées par défaut dans les navigateurs web.
Étape préliminaire
Avant de générer le certificat de l'autorité de certification, il est impératif d'avoir procédé à l'installation d'OpenSSL.
Création du certificat de l'autorité racine
- Se placer dans le répertoire /etc/pki/CA sous CentOS/RedHat/Fedora et /etc/ssl sous ubuntu:
- Exécuter la commande suivante pour générer une biclé RSA, protégé par une passphrase:
openssl genrsa -out private/cakey.pem -des3 2048
Generating RSA private key, 2048 bit long modulus .................+++ .................................................................+++ e is 65537 (0x10001) Enter pass phrase for private/cakey.pem: Verifying - Enter pass phrase for private/cakey.pem:
- Restreindre l'accès à la biclé de l'autorité racine:
chmod 600 private/cakey.pem
- Exécuter la commande suivante pour générer le certificat auto-signé valable 40 ans:
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -config ../tls/openssl.cnf -extensions CA_ROOT -days 14600
Enter pass phrase for private/cakey.pem: 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. ----- Country Name (2 letter code) [FR]: State or Province Name (full name) [Herault]: Locality Name (eg, city) [Saint-Jean-de-Védas]: Organization Name (eg, company) [Minetti]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:Minetti root CA Email Address []:root@minetti.org
- Et enfin, exécuter les commandes suivantes pour créer la base de données de la CA:
touch index.txt echo '01' > serial
Remarque: Lorsque qu'un certificat d'une autorité a expiré, il suffit de régénérer un nouveau certificat auto-signé avec la même biclé pour le renouveler. Les certificats signés par l'ancien CA seront donc valide avec le nouveau CA.
Test du certificat de l'autorité racine
Exécuter la commande suivante pour vérifier le certificat généré:
openssl x509 -purpose -in cacert.pem -text -noout
Certificate purposes: SSL client : No SSL client CA : Yes SSL server : No SSL server CA : Yes Netscape SSL server : No Netscape SSL server CA : Yes S/MIME signing : No S/MIME signing CA : Yes S/MIME encryption : No S/MIME encryption CA : Yes CRL signing : Yes CRL signing CA : Yes Any Purpose : Yes Any Purpose CA : Yes OCSP helper : Yes OCSP helper CA : Yes Certificate: Data: Version: 3 (0x2) Serial Number: d9:55:07:3b:74:74:35:6c Signature Algorithm: sha1WithRSAEncryption Issuer: C=FR, ST=Herault, L=Saint-Jean-de-V\xC3\xA9das, O=Minetti, CN=Minetti root CA/emailAddress=root@minetti.org Validity Not Before: Aug 17 14:45:26 2010 GMT Not After : Aug 14 14:45:26 2020 GMT Subject: C=FR, ST=H\xC3\xA9rault, L=Saint-Jean-de-V\xC3\xA9das, O=Minetti, CN=Minetti root CA/emailAddress=root@minetti.org Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:cd:bf:e9:38:dd:60:77:f7:f4:c8:35:4c:e5:51: c7:23:9d:e0:ee:f0:6f:c5:6a:8f:97:c4:ac:4e:76: 1c:de:43:7d:dc:b6:e1:92:6b:c3:9c:89:92:0c:e7: 6a:84:a9:06:8e:b0:25:cc:a9:23:ca:99:2b:e0:14: db:81:26:18:44:ea:35:04:18:05:54:35:37:09:ec: 69:4b:d0:fa:4f:10:6d:29:79:3b:49:e0:20:fc:42: 08:fe:12:d8:20:6f:9f:89:5a:06:dc:6c:0c:81:3d: a7:02:ce:ee:fd:62:b4:9b:52:6d:ed:c7:c4:83:e3: 70:0b:8c:b0:e6:a0:ef:93:ee:f4:82:56:c3:29:b6: ad:a9:ce:77:af:f0:ec:22:df:a2:95:5b:02:10:30: 4c:d4:7f:ed:4f:99:52:99:67:39:8d:d2:f1:b0:8d: d9:44:52:11:05:eb:dd:db:b2:f8:17:36:82:8e:d2: a1:7d:4e:06:31:b0:6e:4c:27:19:fb:53:39:54:ae: 36:20:6e:87:f2:05:5a:b5:a9:1e:2c:54:31:2d:03: de:59:72:90:1b:05:0c:81:87:42:81:de:91:60:5b: 57:d0:bc:62:bd:db:f1:f0:e1:5d:f2:e2:b9:bf:a9: 72:2d:d3:11:0e:25:f7:a4:0b:1e:ce:fa:42:92:82: 7e:c3 Exponent: 65537 (0x10001) X509v3 extensions: Netscape Comment: CA Racine X509v3 Subject Key Identifier: 6E:9F:EC:0E:51:90:72:AC:48:2E:D5:10:D2:17:0C:A9:85:6C:A4:F6 X509v3 Authority Key Identifier: keyid:6E:9F:EC:0E:51:90:72:AC:48:2E:D5:10:D2:17:0C:A9:85:6C:A4:F6 DirName:/C=FR/ST=Herault/L=Saint-Jean-de-V\xC3\xA9das/O=Minetti/CN=Minetti root CA/emailAddress=root@minetti.org serial:D9:55:07:3B:74:74:35:6C X509v3 Basic Constraints: critical CA:TRUE, pathlen:1 X509v3 Key Usage: Certificate Sign, CRL Sign Signature Algorithm: sha1WithRSAEncryption 5f:5b:1e:26:2d:64:be:88:fc:b7:a7:ee:fd:f6:35:87:ed:71: 3f:c6:75:98:50:5f:d2:99:02:7f:ea:91:61:7f:af:e7:4e:69: 4f:e5:d0:63:35:1d:84:7f:11:99:c8:f9:56:d1:37:68:7e:4f: 10:ea:c8:eb:0c:94:ac:03:64:a1:df:0c:67:f6:c8:59:e1:d3: 0e:0f:2e:8e:fb:fd:bb:d6:13:56:85:1a:fa:d7:dc:52:c3:f3: f2:d1:e7:c5:89:88:5e:49:a6:0c:5d:01:9a:e2:d8:28:43:ed: 5a:90:c9:21:e3:28:a2:cf:3b:74:e5:05:e9:f3:1a:61:91:6d: 14:d2:d0:ec:50:9a:27:b2:a7:44:8d:e8:05:bc:d9:87:7f:19: 7d:7a:2b:aa:d1:19:12:ff:19:a7:9c:3d:cd:64:26:27:e3:43: 07:71:d8:48:aa:7b:21:a1:d9:77:dd:b2:5c:2b:e3:91:2b:ba: 46:61:6d:c3:27:15:2d:4a:fd:23:f8:68:71:12:b6:fc:7c:7a: 38:ab:6c:1b:34:a3:4e:6e:16:b5:d6:cd:2b:29:ec:b0:c0:08: ec:d1:f3:f0:ae:c6:d3:3f:de:93:f0:a0:01:33:7f:5c:6f:ff: 37:18:eb:2d:c1:6e:93:3d:c0:3a:a8:b1:00:18:a2:7e:77:b1: 3f:76:99:b5
Création d'un certificat d'une autorité intermédiaire
Exécuter les commande suivantes pour générer le certificat:
openssl genrsa -out cassl/cassl.key -des3 2048 openssl req -new -key cassl/cassl.key -out cassl/cassl.crs -config ./openssl.cnf openssl ca -out cassl/cassl.pem -config ./openssl.cnf -extensions CA_SSL -infiles cassl/cassl.crs
Intégration d'un certificat CA dans un keystore Java
Pour intégrer un certificat d'une autorité de certification dans un keystore Java, il faut commencer par convertir notre certificat au format DER:
openssl x509 -in ca/ca.pem -inform PEM -out ca/ca.cer -outform DER
Ensuite, il n'y a plus qu'a l'importer dans le keystore Java:
keytool -importcert -alias minettica -trustcacerts -file ca/ca.cer -keystore $JAVA_HOME/jre/lib/security/jssecacerts -storepass changeit