Création des certificat pour le HaProxy

1. Avant-propos
1.1. Présentation
2. Création des différents certificats
2.1. Vérification du PKCS12 fabriqué
2.2. Extraire le certificat du fichier P12
2.3. Extraire la clé privée du fichier P12
2.4. Convertir un certificat au format PEM (avec les balises) vers le format DER (binaire)
2.5. Extraction de la chaîne de certificat (CAs-cert.pem)
3. Lecture des différents certificats
3.1. Lecture d'un fichier PEM

1. Avant-propos


1.1 - Présentation.


Nous allons partir d'un certificat P12 créé par VeriSign ou un autre organisme.
Pour réaliser les différentes étapes nous avons besoin d'OpenSSL.

2. Création des différents certificats


2.1 - Vérification du PKCS12 fabriqué


Afin de vérifier la clef P12, lancer la commande ci-dessous.
A la question du mot de passe, saisissez celui que l'on vous a donné
A la question de la “pass phrase”, saisissez au moins 4 caractères
[root] # openssl pkcs12 -info -in cert_application_avantchaine.p12
[root] # openssl pkcs12 -info -in www.babynounou.fr.p12 

Enter Import Password:

Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:


MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    localKeyID: FF 08 F6 13 F2 DB BC 04 32 90 E0 02 F6 FC 55 D0 BC 81 9C 1D 
    friendlyName: www.babynounou.fr
subject=/C=FR/O=SOCIETE ARECIBO SASU/OU=0002 22222222222/CN=www.babynounou.fr
issuer=/C=FR/O=SOCIETE ARECIBO SASU/OU=0001 1111111111/CN=AC2-ARECIBO-SERVEURS
-----BEGIN CERTIFICATE-----
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
bal ... blaaaaaa
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
ZHG0MlowdDELMAkGA1UEBhMCRlIxMDAuBgNVBAoMJ01JTklTVEVSRSBERSBMIEVD
dL/LTmrFW7xSzxRgpk8wC003EGdU++dmwUpDoxLvnb3h9udGEoShq+IAGNi7
-----END CERTIFICATE-----
Certificate bag
Bag Attributes: 
subject=/C=FR/O=SOCIETE ARECIBO SASU/OU=0002 2222222222/CN=AC2-ARECIBO-SERVEURS
issuer=/C=FR/O=SOCIETE ARECIBO SASU/OU=0002 2222222222/CN=AC2-ARECIBO-RACINE
-----BEGIN CERTIFICATE-----
MGGF/zDDA+egAwIBAgISESGkcvTn3woeizdDtvi1WPDuMA0GCSqGSIb3DQEBCwUA
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
.
..
... bla bla
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
6KpL
-----END CERTIFICATE-----
Certificate bag
Bag Attributes: 
subject=/C=FR/O=SOCIETE ARECIBO SASU/OU=0002 130013345/CN=AC2-ARECIBO-RACINE
issuer=/C=FR/O=SOCIETE ARECIBO SASU/OU=0002 130013345/CN=AC2-ARECIBO-RACINE
-----BEGIN CERTIFICATE-----
MGGF/zDDA+egAwIBAgISESGkcvTn3woeizdDtvi1WPDuMA0GCSqGSIb3DQEBCwUA
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
.
..
... bla bla
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
7P/kdCxaNK2QqXQrJmzC7xJOcppYZ1z0OYjVJkuhIS60hQi88MSUc82BktAzSTUK
QC4MTriFB3zWFXyNOy2b+iseU3L7+WArOVxQOl9eUu6ysWtVSWpJ6fguWyLDp9k9
alSI1kSYYWt7snCgu/ckCYQ=
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
    localKeyID: D8 07 A9 23 34 FE CD 07 49 87 F3 23 B2 FF 3A D8 BC 34 3E 1A 
    friendlyName: www.babynounou.fr
Key Attributes: 
Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
.. .. blabla
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
MGGF/zDDA+egAkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIPXTYH3+wPbACAggA
RMzbx+N4YUPmjdfklsfNlYH53pSL6sUmw3uX7TW3+BYraLv7HgjP2+5hhEl2mFuv
sd3=
-----END ENCRYPTED PRIVATE KEY-----
[root] # 

2.2 - Extraire le certificat du fichier P12


Lancer la commande suivante :
[root] # openssl pkcs12 -in MonCertificat.p12 -out MonCertificat.crt -nokeys -clcerts
En sortie, le fichier « MonCertificat.crt» contient le certificat serveur.
[root] # openssl pkcs12 -in www.babynounou.fr.p12 -out www.babynounou.fr.crt -nokeys -clcerts 
Enter Import Password:

MAC verified OK
[franck@arecibo] # 
[franck@arecibo] # ls -l www.babynounou.fr*
-rw-r--r-- 1 franck franck 2191 janv. 20 14:33 www.babynounou.fr.crt
-rw-r--r-- 1 franck franck 6364 janv. 20 09:56 www.babynounou.fr.p12
[franck@arecibo] # 

2.3 - Extraire la clé privée du fichier P12


Lancer la commande suivante :
[root] # openssl pkcs12 -in MonCertificat.p12 -out MonCertificat.key -nodes -nocerts
En sortie, le fichier « MonCertificat.key» contient la clé privée.
[franck@arecibo] # openssl pkcs12 -in www.babynounou.fr.p12 -out www.babynounou.fr.key -nodes -nocerts
Enter Import Password:

MAC verified OK

[franck@arecibo] # 
[franck@arecibo] # ls -l www.babynounou.fr*
-rw-r--r-- 1 franck franck 2191 janv. 20 14:33 www.babynounou.fr.crt
-rw-r--r-- 1 franck franck 1864 janv. 20 14:39 www.babynounou.fr.key
-rw-r--r-- 1 franck franck 6364 janv. 20 09:56 www.babynounou.fr.p12
[franck@arecibo] # 

2.4 - Convertir un certificat au format PEM (avec les balises) vers le format DER (binaire)


Lancer la commande suivante :
[root] # openssl x509 -in MonCertificat.crt -inform PEM -out MonCertificat.cer -outform DER
En sortie, le fichier « MonCertificat.cer » contient le certificat au format DER.
[franck@arecibo] # openssl x509 -in www.babynounou.fr.crt -inform PEM -out www.babynounou.fr.cer -outform DER
[franck@arecibo] # ls -l www.babynounou.fr*
-rw-r--r-- 1 franck franck 1341 janv. 20 14:42 www.babynounou.fr.cer
-rw-r--r-- 1 franck franck 2191 janv. 20 14:33 www.babynounou.fr.crt
-rw-r--r-- 1 franck franck 1864 janv. 20 14:39 www.babynounou.fr.key
-rw-r--r-- 1 franck franck 6364 janv. 20 09:56 www.babynounou.fr.p12
[franck@arecibo] # 

2.5 - Extraction de la chaîne de certificat (CAs-cert.pem)


Il s'agit de l'ensemble des certificats des autorités de certifications.
Les certificats sont mis les uns à la suite des autres dans le fichier de sortie .pem
Méthode avec tout les certificats.
[root] # openssl pkcs12 -in Moncertificat.p12 -out MesCertificats.pem -nodes
La méthode à tutu.:-) si un seul certificat
[root] # cat MonCertificat.crt MonCertificat.key > MonCertificat.pem
[franck@arecibo] # cat www.babynounou.fr.crt www.babynounou.fr.key > www.babynounou.fr.pem
[franck@arecibo] # ls -l www.babynounou.fr*
-rw-r--r-- 1 franck franck 1341 janv. 20 14:42 www.babynounou.fr.cer
-rw-r--r-- 1 franck franck 2191 janv. 20 14:33 www.babynounou.fr.crt
-rw-r--r-- 1 franck franck 1864 janv. 20 14:39 www.babynounou.fr.key
-rw-r--r-- 1 franck franck 6364 janv. 20 09:56 www.babynounou.fr.p12
-rw-r--r-- 1 franck franck 4886 janv. 20 15:10 www.babynounou.fr.pem
[franck@arecibo] # 

3. Lecture des différents certificats


3.1 - Lecture d'un fichier PEM


Lorsque vous lisez votre fichier .pem vous devez voir l'url de votre site internet dans le champs "CN".
[root] # openssl x509 -in MonCertificat.pem -noout -text
[franck@arecibo] # openssl x509 -in www.babynounou.fr.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ff:b3:1b:1A:df:8b:4a:d2:0d:fd:d8:a8
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=FR, O=SOCIETE ARECIBO SASU, OU=0002 130013345, CN=AC2-ARECIBO-SERVEURS
        Validity
            Not Before: Jan 19 14:52:42 2016 GMT
            Not After : Jan 19 14:52:42 2019 GMT
        Subject: C=FR, O=SOCIETE ARECIBO SASU, OU=0002 110020013, CN=www.babynounou.fr
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:96:44:82:0d:7a:ec:2c:ad:7b:c2:cb:4d:7f:be:
                    23:44:20:14:74:37:fc:77:c0:5f:c9:7f:a4:c2:5a:
                    bla... 
                    bla bla ....