Ajout de la chaîne de certificats au certificat p12 (pfx)

J'ai d'application en java et cxf qui se connecte à des WebServices avec certificat client.

J'ai obtenu des certificats forme de WebService propriétaire

  • certificat.p12
  • certificat.pem
  • certificat.crt
  • trusted_ca.cer
  • root_ca.cer

J'ai un problème avec une simple conversion de cette p12 certficate de travail jks keystore requred par java.

Je l'ai fait:

keytool -importkeystore -srckeystore certificate.p12 -srcstoretype PKCS12 -destkeystore certificate1.jks -deststoretype JKS -storepass secret
keytool -import -alias root -file root_ca.cer -trustcacerts -keystore certificate1.jks -storepass secret
keytool -import -alias trusted -file trusted_ca.cer -trustcacerts -keystore certificate1.jks -storepass secret

mais ce jks ne fonctionne pas et je reçois la réponse HTTP '403: Forbidden' lors de l'utilisation de ce certificat de naissance1.jks

Cependant si j'ai importer ce p12(pfx) certificat d'Internet Explorer, puis exporter le certificat à partir d'IE pour pfx format sélectionnant "Inclure tous les certificats dans le chemin d'accès de certification" case à cocher et d'utilisation:

keytool -importkeystore -srckeystore certificate.pfx -srcstoretype PKCS12 -destkeystore certificate2.jks -deststoretype JKS -storepass secret
keytool -import -alias root -file root_ca_kir.cer -trustcacerts -keystore certificate2.jks -storepass secret
keytool -import -alias trusted -file trusted_ca_kir.cer -trustcacerts -keystore certificate2.jks -storepass secret

Alors tout fonctionne bien et je peux me connecter à un WebService à l'aide de certificate2.jks.

J'ai trouvé que le certificat original.p12(pfx) ne contient qu'une seule entrée (Certificat longueur de la chaîne: 1):

keytool -list -keystore certificate.p12 -storepass secret -storetype PKCS12 -v


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

Alias name: alias
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=MyCompany, EMAILADDRESS=my.email@domain.com, O=bla, C=PL
Issuer: CN=Trusted CA, O=ble, C=PL
Serial number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valid from: ... until: ...
Certificate fingerprints:
         MD5:  XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
         SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: X.X.XX.XX Criticality=false
KeyUsage [
  DigitalSignature
  Key_Encipherment
]

...

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

tout certificat.pfx exportés à partir d'IE avec "Inclure tous les certificats dans le chemin d'accès de certification" contient la chaîne de certificat avec la deuxième certificat CA de Confiance (Certificat longueur de la chaîne: 2):

keytool -list -keystore certificate.p12 -storepass secret -storetype PKCS12 -v
*******************************************
*******************************************
Alias name: alias
Entry type: PrivateKeyEntry
Certificate chain length: 2
Certificate[1]:
Owner: CN=MyCompany, EMAILADDRESS=my.email@domain.com, O=bla, C=PL
Issuer: CN=Trusted CA, O=ble, C=PL
Serial number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valid from: ... until: ...
Certificate fingerprints:
MD5:  XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: X.X.XX.XX Criticality=false
KeyUsage [
DigitalSignature
Key_Encipherment
]
...
Certificate[2]:
Owner: CN=Trusted CA, O=ble ble ble, C=PL
Issuer: CN=ROOT CA, O=ble ble ble, C=PL
Serial number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valid from: ... until: ...
Certificate fingerprints:
MD5:  XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
*******************************************
*******************************************

Donc pour résoudre mon problème j'ai besoin d'avoir de certificat p12 avec la chaîne de certificat CA de confiance.
Je peux le faire par l'importation de p12 pour IE et puis l'exportation de retour avec "Inclure tous les certificats dans le chemin d'accès de certification".

Comment puis-je le faire sans IE à l'aide de keytool ou un autre outil?

Bary

source d'informationauteur bary