web-dev-qa-db-fra.com

Importation de la chaîne de certificats PEM et de la clé vers Java Keystore

Il existe de nombreuses ressources sur ce sujet, mais je n'en ai trouvé aucune qui couvre ce cas un peu spécial.

J'ai 4 fichiers;

  • privatekey.pem
  • certificate.pem
  • intermediaire_rapidssl.pem
  • ca_geotrust_global.pem

Et je souhaite les importer dans un nouveau magasin de clés.

Certains sites suggèrent d'utiliser le format DER et de les importer un par un, mais cela a échoué car la clé n'est pas reconnue.

Un autre site a suggéré une classe spéciale "ImportKey" à exécuter pour l'importation, et cela a fonctionné jusqu'à ce que je vois que la chaîne est rompue. C'est à dire. la longueur de la chaîne sur le certificat est 1, en ignorant l'intermédiaire et ca.

Certains sites suggèrent PKCS7, mais je ne peux même pas obtenir de chaîne à partir de cela. D'autres suggèrent le format PKCS12, mais en ce qui concerne mes tests, cela a également échoué pour obtenir la chaîne entière.

Tous les conseils ou astuces sont les bienvenus.

29
Trollbane

Ce n'est peut-être pas parfait, mais j'avais quelques notes sur mon utilisation de keytool que j'ai modifiées pour votre scénario.

  1. Importez un certificat CA racine ou intermédiaire dans un magasin de clés Java:

    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. Combinez le certificat et la clé privée dans un fichier avant l'importation.

    cat certificate.pem privatekey.pem > combined.pem
    

    Cela devrait entraîner un fichier ressemblant au format ci-dessous.

    COMMENCER LE CERTIFICAT
    ...
    FIN DU CERTIFICAT
    COMMENCER LA CLÉ PRIVÉE RSA
    ...
    FIN DE LA CLÉ PRIVÉE RSA

  3. Importez un certificat et une clé principaux signés dans un magasin de clés Java:

    keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
    
27
Aaron Copley

Concatène tous les fichiers * .pem en un seul fichier pem, comme all.pem Puis crée un magasin de clés au format p12 avec clé privée + all.pem

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

Puis exportez p12 en jks

keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks
47
senanqerib

keytool ne fournit pas un moyen d'importer le certificat + la clé privée à partir d'un seul fichier (combiné), comme proposé ci-dessus. Il fonctionne correctement, mais seul le certificat est importé, tandis que la clé privée est ignorée. Vous pouvez le vérifier par keytool -list -v -keystore yourkeystore.jks - le type d'entrée de votre domaine est TrustedCertEntry, pas PrivateKeyEntry.

Donc, pour résoudre le problème initial, il faut d'abord créer un magasin de clés PKCS # 12 en utilisant openssl (ou un outil similaire), puis importer le magasin de clés avec keytool -importkeystore.

9
Ixmal