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?
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
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