User Tools

Site Tools


java:keytool:list-certificates-from-jks

This is an old revision of the document!


Create keystore jks file

In keystore we want to import:

  • the certificate chain
  • the private key

We can't do this directly in keytool.
A PKCS12 file should be created which then will be imported in keystore.

Create PKCS12 file

Concatenate (manually) all intermediary CA certificates into a single file: all_cert.crt. Then run the above command. The snt.key is the private key of the certificate (the last one in the chain). Enter a password for the p12 file.

openssl pkcs12 -export -in snt_full.crt -inkey snt.key -name snt -out snt.p12

Import the p12 file into a jks file

Replace the password123 with the private key password supplied when it was created.

keytool -importkeystore -deststorepass password123 -destkeystore keystore_custom.jks -srckeystore snt.p12 -srcstoretype PKCS12

Output:

Importing keystore snt.p12 to keystore_custom.jks...
Enter source keystore password:
Entry for alias sentinel successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore_custom.jks -destkeystore keystore_custom.jks -deststoretype pkcs12".

Create truststore jks file

In truststore file we need to import the CA certificates.

keytool -import -alias rootca -file ca.crt -storetype JKS -keystore truststore_custom.jks

Output:

Enter keystore password:
Re-enter new password:
Owner: OU=AX Software, O=AX, L=Bucharest, ST=Romania, C=RO
Issuer: OU=AX Software, O=AX, L=Bucharest, ST=Romania, C=RO
Serial number: 72b1b38c2fc0fc33ff298be6e6a704eb4ebd24c4
Valid from: Sat Aug 08 15:56:46 EEST 2020 until: Tue Aug 06 15:56:46 EEST 2030
Certificate fingerprints:
         MD5:  16:2B:B3:B0:9C:0E:12:37:D8:CA:7E:05:9C:23:76:F0
         SHA1: 59:B4:0C:EA:AB:8A:48:7D:14:65:6D:6C:D4:07:A9:81:CB:A6:D2:27
         SHA256: 07:50:F3:D5:F2:62:6A:9F:27:3C:56:27:4A:CD:D0:E6:34:98:26:F1:20:04:0C:02:9F:22:B0:35:E1:30:DD:50
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

Extensions:

#1: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 58 1E 75 F6 E9 9B 54 41   6D 0E EF 59 5C A6 60 88  X.u...TAm..Y\.`.
0010: 82 74 C4 43                                        .t.C
]
]

Trust this certificate? [no]:  yes
Certificate was added to keystore

Repeat this for all CA certificates:

keytool -import -alias int1 -file int1.crt -storetype JKS -keystore truststore_custom.jks
keytool -import -alias int2 -file int2.crt -storetype JKS -keystore truststore_custom.jks

Output:

Enter keystore password:
Certificate was added to keystore

List JKS entries (certificates)

keytool.exe -list -rfc -keystore keystore.jks | openssl x509 -text

Output:

  Enter keystore password:  test*
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 20 (0x14)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = FR, O = Test, CN = Test CA
        Validity
            Not Before: Oct 22 14:36:00 2017 GMT
            Not After : Aug  9 13:17:00 2019 GMT
        Subject: C = FR, O = Test, CN = Test
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b6:18:c9:2a:f8:01:a3:86:e6:32:63
        ...............            
java/keytool/list-certificates-from-jks.1596907364.txt.gz · Last modified: 2023/07/04 19:36 (external edit)