úterý 15. února 2011

Import privátních klíčů PKCS12 do JKS keystoru glassfishe

Výchozí stav: mám soubor od certifikační autority s příponou p12, heslo k privátnímu klíči a potřebuji ho použít pro SSL v glassfishi jako náhradu za prošlý certifikát
Krok 1: nejprve je třeba z keystore.jks odstranit onen prošlý certifikát:
 keytool -delete -alias alias -keystore keystore.jks -storepass changeit -v  

Krok 2: import obsahu p12 do keystore.jks
 keytool -v -importkeystore -srckeystore cert_auth.p12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS  

Krok 3: Dost možná nemá importovaný klíč stejný alias jaký bychom si představovali. My bychom např. chtěli aby se jmenoval ap1as1 a on se jmenuje authkey#1, to lze vyřešit následovně:
 keytool -changealias -alias authkey#1 -destalias ap1as1 -keystore keystore.jks  

Po zadání tohoto příkazu se keytool nejprve zeptá na heslo pro keystore a poté na heslo ke klíči, který jsme v předchozím kroku importovali.
Krok 4: V tomto stavu by po restartu glassfishe pravděpodobně nastala chyba java.security.UnrecoverableKeyException: Cannot recover key Důvodem je jiné heslo pro nově importovaný klíč a jiné heslo pro keystore. Hesla lze sjednotit následovně:
 keytool -keypasswd -alias ap1as1 -keypass oldKeyPassword -new changeit -keystore keystore.jks -storepass changeit -v  

Nyní by mělo stačit restartovat glassfish.