web-dev-qa-db-fra.com

Comment créer un certificat dans un magasin de clés PKCS12 avec keytool?

Je voulais créer un certificat dans un format de magasin de clés PKCS12 avec le programme keytool.

Le magasin de clés a l'extension .pfx.

Comment puis-je y parvenir?

18

Si le magasin de clés est de type PKCS12 (.pfx) vous devez le spécifier avec -storetype PKCS12 (sauts de ligne ajoutés pour plus de lisibilité):

keytool -genkey -alias <desired certificate alias> 
    -keystore <path to keystore.pfx>
    -storetype PKCS12 
    -keyalg RSA 
    -storepass <password> 
    -validity 730 
    -keysize 2048 
27

Réponse supplémentaire à la clé de la question.

Avec JDK 8 (1.8.0_121-b1) vous ne recevez pas d'exception si vous supprimez -storetype pkcs12 mais le keytool crée un magasin de clés JKS à la place, et le .pfx l'extension est ignorée.

Il demande également un -keypass mykeypassword que keytool ne prend pas en charge pour PKCS12.

%Java_HOME%/bin/keytool -genkeypair -alias mykey -keyalg EC -dname "cn=CN, ou=OU, o=O, c=C" -validity 365 -keystore keystore.pfx -keypass mykeypassword -storepass mystorepassword -v

(translated)
Generating keypair (Type EC, 256 Bit) and self-signed certificate (SHA256withECDSA) with a validity of 365 days
    for: CN=CN, OU=OU, O=O, C=C
[keystore.pfx saved]

Énumérez le contenu:

%Java_HOME%/bin/keytool -list -keystore keystore.pfx -storepass mystorepassword 

(translated)
Keystore-Type: JKS
Keystore-Provider: Sun

Keystore contains 1 entry.

mykey, 25.04.2017, PrivateKeyEntry,
Certificate-Fingerprint (SHA1): A1:6C:5F:8F:43:37:1A:B6:43:69:08:DE:6B:B9:4D:DB:05:C9:D5:84

Vous voyez que c'est un magasin de clés Java.

Le problème suivant est que même si vous spécifiez -storetype pkcs12 lorsque vous -list le magasin de clés, le keytool affichera toujours le magasin comme un magasin de clés JKS!

Essayons cela:

%Java_HOME%/bin/keytool -genkeypair -alias mykey -keyalg EC -dname "cn=CN, ou=OU, o=O, c=C" -validity 365 -storetype pkcs12 -keystore keystore.pkx -keypass mykeypassword -storepass mystorepassword -v

(translated)
Warning: No support for different keystore and key password for PKCS12 keystores. The value of -keypass will be ignored.
Generating keypair (Type EC, 256 Bit) and self signed certificate (SHA256withECDSA) with a validity of 365 Days
        für: CN=CN, OU=OU, O=O, C=C
[keystore.pkx saved]

Maintenant listez le contenu:

%Java_HOME%/bin/keytool -list -keystore keystore.pkx -storepass mystorepassword

(translated)
Keystore-Type: JKS // ??
Keystore-Provider: Sun

Keystore contains 1 entry

mykey, 25.04.2017, PrivateKeyEntry,
Certificate Fingerprint (SHA1): EA:C2:36:C6:55:69:CB:32:22:C7:14:83:67:47:D2:7E:06:8E:13:14
1
aliopi