Heute hatte ich das Thema zu klären, wie ich den öffentlichen und privaten Schlüssel eines Zertifikates aus einer KDB-Key-Datenbank exportieren kann. Das ist zwar technisch kein großes Thema, dadurch das man aber wenigstens 2 Tools kombinieren muss, wird es aber wieder interessant.
Im IBM Infocenter sollte man sich den Artikel Using the IKEYCMD command-line interface durchlesen. Hier wird kurz das CommandLine Interface zum Ikeyman beschrieben. Natürlich bekommt man die Informationen auch direkt in der Shell.
1 | user@node:~$ java com.ibm.gsk.ikeyman.ikeycmd |
Wichtig ist für uns der „-export“ Parameter. Dieser exportiert die Zertifikate aus dem Keystore, so dass man diese in einzelne Dateien abspeichern kann.
1 2 3 4 5 6 7 8 9 10 11 12 | user@node:~$ java com.ibm.gsk.ikeyman.ikeycmd No options were specified on the command line. -Program usage- Object Action Description ------ ------ ----------- ... -export Export a personal certificate and associated private key into a PKCS12 file or a key database -extract Extract a certificate from a key database |
Als erstes muss nun der kdb-Keystore in einen PKCS12 Keystore umgewandelt werden.
1 2 3 4 5 | user@node:~$ java com.ibm.gsk.ikeyman.ikeycmd -cert -export \ -db appl-web-qs-vip.domainxy.kdb \ -pw [xxxyyyzzznnn] -label appl-web-qs-vip.domainxy \ -target_pw [xyznnn] -target_type pkcs12 \ -target appl-web-qs-vip.domainxy.p12 |
Nun kann man mit OpenSSL das Zertifikat und den Private Key exportieren:
1 2 3 4 5 6 7 8 | #Für den Private Key: user@node:~$ openssl pkcs12 -in appl-web-qs-vip.domainxy.p12 \ -out appl-web-qs-vip.domainxy.key -nocerts –nodes #Für das Zertifikat: user@node:~$ openssl pkcs12 -in appl-web-qs-vip.domainxy.p12 \ -out appl-web-qs-vip.domainxy.pem -clcerts -nokeys |
Anbei noch eine sehr gute Seite um Zertifikate mit OpenSSL anzuschauen, zu exportieren, oder zu ändern: magenbrot-Wiki – OpenSSL-Zertifikate.