Importação da cadeia de certificados do PEM e chave para o Java Keystore

26

Existem muitos recursos sobre esse assunto, mas nenhum que cobre esse caso um pouco especial.

Eu tenho 4 arquivos;

  • privatekey.pem
  • certificate.pem
  • intermediate_rapidssl.pem
  • ca_geotrust_global.pem

E desejo importá-los para um novo armazenamento de chaves.

Alguns sites sugerem usar o formato DER e importá-los um por um, mas isso falhou porque a chave não é reconhecida.

Outro site sugeriu uma classe "ImportKey" especial para ser importada, e isso funcionou até que vi que a cadeia estava quebrada. Ou seja o comprimento da corrente no certificado é 1, ignorando o intermediário e ca.

Alguns sites sugerem o PKCS7, mas não consigo nem obter uma cadeia disso. Outros sugerem o formato PKCS12, mas no que diz respeito aos meus testes que falharam também para obter toda a cadeia.

Qualquer conselho ou dicas são muito bem-vindos.

    
por Trollbane 28.02.2013 / 17:17

3 respostas

22

Isso pode não ser perfeito, mas eu fiz algumas anotações sobre o uso de keytool que modifiquei para o seu cenário.

  1. Importe um certificado de CA raiz ou intermediário para um keystore Java existente:

    keytool -import -trustcacerts -alias root -file ca_geotrust_global.pem -keystore yourkeystore.jks
    keytool -import -trustcacerts -alias root -file intermediate_rapidssl.pem -keystore yourkeystore.jks 
    
  2. Combine o certificado e a chave privada em um arquivo antes de importar.

    cat certificate.pem privatekey.pem > combined.pem
    

    Isso deve resultar em um arquivo parecido com o formato abaixo.

    BEGIN CERTIFICATE
    ...
    END CERTIFICATE
    BEGIN RSA PRIVATE KEY
    ...
    END RSA PRIVATE KEY

  3. Importe um certificado principal assinado & chave para um keystore Java existente:

    keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
    
por 28.02.2013 / 18:38
38

Concatene todos os arquivos * .pem em um arquivo pem, como all.pem Em seguida, crie keystore no formato p12 com chave privada + all.pem

openssl pkcs12 -export -inkey private.key -in all.pem -name test -out test.p12

Em seguida, exporte p12 para jks

keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks
    
por 24.12.2015 / 14:51
7

O keytool não fornece uma maneira de importar o certificado + chave privada de um único arquivo (combinado), como proposto acima. Ele é executado corretamente, mas somente o certificado é importado, enquanto a chave privada é ignorada. Você pode verificar isso por keytool -list -v -keystore yourkeystore.jks - seu tipo de entrada é TrustedCertEntry, não PrivateKeyEntry.

Para resolver o problema inicial, primeiro é necessário criar um keystore PKCS # 12 usando o openssl (ou ferramenta semelhante) e, em seguida, importar o keystore com keytool -importkeystore .

    
por 17.11.2015 / 12:40