Importando certificados de julgamento de Thawte para uma keystore java
Pergunta
Estou tentando configurar um servidor Tomcat com SSL. Eu gerei um teclado assim:
$ keytool -genkeypair -alias tomcat -keyalg RSA -keystore keys
Em seguida, gero uma solicitação de assinatura de certificado:
$ keytool -certreq -keyalg RSA -alias tomcat -keystore keys -file tomcat.csr
Então copio colo o conteúdo de tomcat.csr
em um formulário no site da Thawte, solicitando um certificado SSL de teste. Em troca, recebo dois certificados delimitados com -----BEGIN ... -----END
, que eu salvo sob tomcat.crt
e thawte.crt
. (Thawte chama o segundo certificado de certificado de "Teste de Teste Ca").
Quando tento importar qualquer um deles, falha:
$ keytool -importcert -alias tomcat -file tomcat.crt -keystore keys
Enter keystore password:
keytool error: java.lang.Exception: Failed to establish chain from reply
$ keytool -importcert -alias thawte -file thawtetest.crt -keystore keys
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate
Adicionando o -trustcacerts
A opção para qualquer um desses comandos também não muda nada.
Alguma ideia do que estou fazendo de errado aqui?
Solução
Eu finalmente entendi o que estava acontecendo aqui. Acontece que as respostas que recebi de Thawte são formatadas como PKCs#7, enquanto keytool
espera certificado no formato X.509.
openssl
pode ser usado para converter certificados de um formato para outro:
$ openssl pkcs7 -in thawtetest.crt -print_certs |
openssl x509 > thawtetest.x509
Agora você pode importar thawtetest.x509
com Keytool, e tomcat.crt
logo atrás dele.
Outras dicas
Você poderá importar cadeias PKCS#7 usando o Keytool, desde que esteja usando uma versão mais recente. Exportar os certificados para arquivos distintos também funcionará, mas se você estiver executando uma versão recente do Keytool, não deve haver problema em importar o próprio arquivo PKCS#7.
Tendo encontrado o mesmo problema que encontrei esta postagem o que me ajudou. Coloquei os certificados de teste que recebi em um único arquivo e usei o keytool para importar a criação Claro que o alias (Keytool -alias param) que usei foi diferente (ou seja, não é o mesmo alias que usei ao criar os certificados para a solicitação). É uma mensagem de erro bizarra, uma vez que simplesmente não gosta de você tentar importar para o mesmo alias.