I have a .pfx file that has multiple certificates, one of them is the signing CA certificate of a server certificate assigned to the IBM i Remote Command Server in DCM.
I managed to use openssl and certutil to display the content of such a certificate, as follows:
openssl x509 -passin pass:<password> -text -noout -in filename.pfx
openssl pkcs12 -in filename.pfx -passin pass:<password> -info -nokeys
certutil -v -dump DEVP20.pfx
All the above are working fine and displaying content, but the problem is that I don't know how to analyze such output.
Also, the keytool is reporting that there are no entries in the keystone:
keytool -list -v -keystore filename.pfx
Enter keystore password: <entery-password>
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 0 entries
All I want is to create a new trust store or use an existing trust store such as jssecacerts to add the signing CA Certificate to the trust store.
Note that in the output of the different commands above I see multiple certificates. I am not sure if they are part of the chain or related, and by checking the alias or friendly name, I can tell which one I want.
The objective is to be able to use the class SecureAS400 from IBM Toolbox for Java to open a secure connection to the IBM i and invoke a command. So we have to load the trust store with the JVM.
I appreciate your help.
First, you have to extract the CA certificate from the .pfx file using openssl:
openssl pkcs12 -in filename.pfx -passin pass:<password> -info -nokeys > filename.pem.Double check that extraction worked:
openssl x509 -in test.pem -noout -textThen either create new JKS using the key tool:
keytool -import -trustcacerts -keystore test.jks -storepass choose-password -file test.pem -alias CANAMEOr you can import the certificate into the existing trust store:
keytool -import -keystore cacerts -storepass changeit -file test.pem -alias CANAME -storetype JKSUsually you would use openssl to interact with most certificate file formats and
keytoolwith java key stores only (JKS)==============.
Update
PKCS12 is an archive file format for storing private keys and X.509 certificates with filename extensions
.p12or.pfxTo be able to work with.pfxfiles you would useopenssl pkcs12command. I am guessingx509command returns first certificate it finds. PKCS12 wikikeytoolManages a keystore (database) of cryptographic keys, X.509 certificate chains, and trusted certificates. I think it only works with java keystores.jksor.bcfks(Bouncy Castle FIPS keyStore) etc.. I think you might actually be able to import certificates directly from.pfxfile to a java keystore usingkeytool.keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 -destkeystore clientcert.jks -deststoretype JKSThat could also import the private key if it's in the
.pfxfile but I am not sure.Hope that helps.