Pozor museum: Toto je archivní verze blogu. Pro vkládání komentářů přejděte na tento článek v nové verzi blogu.

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

  1. 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
  2. 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
  3. Zkontrolujeme si, zda je všechno v pořádku:

    keytool -list -storetype PKCS12 -keystore klíčCertifikát.p12
  4. Importujeme PKCS12 do JKS:

    keytool -importkeystore  -destkeystore keystore.jks \
    -srckeystore klíčCertifikát.p12 -srcstoretype PKCS12
  5. Podíváme se na výsledek:

    keytool -list -keystore keystore.jks
Průměr: 5 (1 hlas)

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

  1. Vytvoříme si soukromý klíč: openssl genrsa -out klic.pem 4096
  2. Vytvoříme požadavek na certifikát: openssl req -new -key klic.pem -out pozadavek.csr
  3. Certifikát nám vydá např. CAcert.org.