Vous avez le certificat .p12 fourni, on le converti en .pem ou .key ou .crt

Options de OpenSSL pkcs12

OpenSSL for Windows : http://www.openssl.org/related/bina... -> http://www.slproweb.com/products/Wi... -> Win64 OpenSSL v1.0.1e Light

>C:\OpenSSL-Win64\bin\openssl.exe pkcs12 ?
Usage: pkcs12 [options]
where options are

-nodes        don't encrypt private keys
-out outfile  output filename

-nocerts      don't output certificates.
-clcerts      only output client certificates.
-cacerts      only output CA certificates.
-nokeys       don't output private keys.
-info         give info about PKCS#12 structure.

Exportation de la clé privé depuis le certificat .p12 fourni

>C:\OpenSSL-Win64\bin\openssl.exe pkcs12 -in "D:\certificat.fourni.p12" -nocerts -nodes -out certificat.key

Génération du fichier "certificat.key" contenant => Bag Attributes + friendlyName + localKeyID + -----BEGIN PRIVATE KEY-----

Exportation de la clé privé et du certificat depuis le certificat .p12 fourni

>C:\OpenSSL-Win64\bin\openssl.exe pkcs12 -in "D:\certificat.fourni.p12" -cacerts -nodes -out certificat.key.crt.pem

Génération du fichier "certificat.key.crt.pem" contenant => Bag Attributes + friendlyName + localKeyID + -----BEGIN PRIVATE KEY----- + Bag Attributes + friendlyName + localKeyID + subject + issuer + -----BEGIN CERTIFICATE-----

Le certificat devrait ressembler par exemple au certificat crt de tcpdf.

Ce fichier, vous permettra par exemple une utilisation sur un client PHP afin de vous connecter à un serveur sous SSL. Par exemple pour un Web Service :

$optionsSOAP = array(
//...
# Pour les identifications à l'aide d'un certificat d'un client HTTPS, utilisez les options local_cert et passphrase.
				,'local_cert' => __DIR__ . DIRECTORY_SEPARATOR . '../certificat.key.crt.pem'
// 				,'passphrase' => $passphrase
//...
);
$clientSOAP = new SoapClient($wsdl,$optionsSOAP);

Lire avec OpenSSL le contenu du certificat en format texte (incluant les date de validité du certificat)

>C:\OpenSSL-Win64\bin\opens
unknown option ?
usage: x509 args
 -text           - print the certificate in text form
>C:\OpenSSL-Win64\bin\openssl.exe x509 -text -in certificat.key.crt.pem
...
       Validity
          Not Before: Aug  7 10:39:08 2011 GMT
          Not After : Aug  6 10:39:08 2015 GMT
...

Lister et vérifier le contenu d'un certificat.p12

Lister un alias

>"C:\Program Files\Java\jre7\bin\keytool" -list -v -alias mon-alias-attendu -keystore certificat.fourni.p12 -storetype pkcs12
erreur keytool : java.lang.Exception: L'alias <mon-alias-attendu > n'existe pas

Tout lister

>"C:\Program Files\Java\jre7\bin\keytool" -list -v -keystore certificat.fourni.p12 -storetype pkcs12
Entrez le mot de passe du fichier de clÚs :

*****************  WARNING WARNING WARNING  *****************
* L'intÚgritÚ des informations stockÚes dans votre fichier de clÚs  *
* n'a PAS ÚtÚ vÚrifiÚe. Pour cela, *
* vous devez fournir le mot de passe de votre fichier de clÚs.                  *
*****************  WARNING WARNING WARNING  *****************

Type de fichier de clÚs : PKCS12
Fournisseur de fichier de clÚs : SunJSSE

Votre fichier de clÚs d'accÞs contient 1 entrÚe

Nom d'alias : alias-fourni
Date de crÚation : 14 ao¹t 2011
Type d'entrÚeá: SecretKeyEntry


*******************************************
*******************************************

Lister un alias existant

>"C:\Program Files\Java\jre7\bin\keytool" -list -v -alias alias-fourni -keystore certificat.fourni.p12 -storetype pkcs12
Nom d'alias : alias-fourni
Date de crÚation : 14 ao¹t 2011
Type d'entrÚeá: PrivateKeyEntry
Longueur de cha¯ne du certificat : 1
Certificat1:
PropriÚtaire : CN=xxx, OU=yyy, O=zzz, C=FR
Emetteur : CN=xxx, OU=yyy, OU=zzz, O=zzz, C=FR
NumÚro de sÚrie : 3a8eb81fbd1f6803196d6654726717aee20adf5a
Valide du : Wed Aug 07 12:39:08 CEST 2011 au : Mon Aug 06 12:39:08 CEST 2015
Empreintes du certificat :
        MD5:  67:30:2A:25:A2:F9:17:32:10:6B:99:CA:B1:F1:9B:65
        SHA1 : AF:13:46:C3:EE:B1:E4:ED:88:96:43:1C:D6:F4:7B:62:20:56:6C:D1
        SHA256 : B4:62:32:C9:6C:AA:9C:18:49:7E:5C:87:DB:C3:D8:30:1B:37:2D:FA:FC:80:8D:37:83:74:24:31:AF:8C:26:90
        Nom de l'algorithme de signature : SHA1withRSA
        Version : 3

Vous avez le certificat .pem fourni, on le converti en .p12

>C:\OpenSSL-Win64\bin\openssl.exe pkcs12 -export -inkey certificat.fourni-key.pem -in certificat.fourni-cert.pem -out certificat.generer.p12 -name "mon-alias"

Ressources

Convertir un certificat de PKCS12 en PEM format ou vice-versa
  • Conversion de PKCS12 en PEM : obtenir la clé privée et otenir votre certificat
  • Conversion de PEM en PKCS12 : openssl pkcs12 -export -out certif.p12 -inkey userkey.pem -in usercert.pem
Certificats
  • Format PEM : Fichier ASCII et il y a '-----BEGIN CERTIFICATE-----'
  • Format DER : Format binaire
  • Convertir un certificat .p12/.pfx (format PKCS12) en PEM (demande du mot de passe d'import). Ce fichier ne contient pas la clé privée
    • openssl pkcs12 -clcerts -nokeys -in certificat.p12 -out certificat.pem
  • Sortir la clé privée d'un fichier .p12/.pfx en PEM (demande du mot de passe d'import)
    • openssl pkcs12 -in certificat.p12 -nocerts -nodes -out certificat.key
  • Créer le .p12
    • openssl pkcs12 -export -in certificat.pem -inkey certificat.key -out certificat.p12
Autres