Input not an X.509 certificate - Java keytool
Při importu certifikátu do Javové klíčenky na nás může vyskočit nepříjemná chyba Input not an X.509 certificate. Jednou z příčin je, že máme certifikát v nesprávném formátu.
V tom případě provedeme převod z PEM do DER pomocí OpenSSL:
openssl x509 -in certifikát.pem -inform PEM -outform DER -out certifikát.der
.
Výsledek pak už snadno pomocí keytoolu importujeme:
keytool -import -alias náš_alias -keystore klíčenka.jks -storepass naše_heslo -file certifikát.der
.
Bonus na závěr: skript pro stažení SSL certifikátu ze serveru:
#!/bin/sh REMHOST=$1 REMPORT=${2:-443} echo |\ openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\ sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Použití: ssl-stažení example.com [port]
Import klíče a certifikátu z PEM do JKS
-
Vytvoříme si P12 obsahující jak klíč, tak certifikát:
openssl pkcs12 -export -in certifikát.pem -inkey klíč.pem -out klíčCertifikát.p12
-
Změníme si alias na požadovanou hodnotu – např.:
keytool -storetype PKCS12 -keystore klíčCertifikát.p12 \ -changealias -alias 2 -destalias frantovo.cz_3
-
Zkontrolujeme si, zda je všechno v pořádku:
keytool -list -storetype PKCS12 -keystore klíčCertifikát.p12
-
Importujeme PKCS12 do JKS:
keytool -importkeystore -destkeystore keystore.jks \ -srckeystore klíčCertifikát.p12 -srcstoretype PKCS12
-
Podíváme se na výsledek:
keytool -list -keystore keystore.jks
PKCS12
Zabalení certifikátu a klíče do jednoho souboru:
openssl pkcs12 -export -in certifikát.pem -inkey klíč.pem -out klíčCertifikát.p12
Samopodepsaný certifikát
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout klíč.pem -out certifikát.pem
Klíč + CSR + Certifikát