Certificat d'importation en tant que PrivateKeyEntry

j'installe SSL sur un serveur Tomcat et je suis les instructions de l'émetteur https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO16181 and it states:

Verify the following information:

The SSL certificate is imported into the alias with the "Entry Type" of 
PrivateKeyEntry or KeyEntry.  If not, please import the certificate into 
the Private Key alias.

Quand j'ai importer le certificat (tomcat), je suis en utilisant:

keytool -import -trustcacerts -alias your_alias_name -keystore your_keystore_filename
-file your_certificate_filename

mais quand je le fais il importe en trustCertEntry

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 3 entries

primaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
tomcat, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):  <snip>
secondaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):  <snip>

Comment puis-je faire l'importation d'alias tomcat en tant que PrivateKeyEntry?

12
demandé sur bhttoan 2014-07-26 22:41:27

3 réponses

se débarrasser de l' -trustcacerts option. Ce n'est pas un certificat d'autorité de certification. certificat. Et utilisez le même alias que la clé privée avait déjà.

6
répondu user207421 2014-07-27 10:23:16

ces lignes directrices de L'AC sont un peu trompeuses. @EJP a dit à juste titre que vous ne devriez pas utiliser -trustcacerts de votre certificat.

de plus, ce document CA suggère d'importer les certificats CA primaires et intermédiaires dans des opérations séparées, ce qui devrait vous donner un résultat comme ceci:

primaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
secondaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):  <snip>
tomcat, Jul 26, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1):  <snip>

malheureusement, importer les certificats CA dans votre keystore comme si c'était inutile. (Il serait utile dans un truststststore, mais L'AC que vous utilisez est probablement déjà dans la truststore par défaut.)

il est utile d'avoir les certificats de CA pour votre certificat dans le keystore en effet, présenter une chaîne complète de certificats lorsque des certificats intermédiaires sont requis. Cependant, le gestionnaire de clés (à moins d'une implémentation personnalisée) ne construira pas la chaîne pour vous, même s'il trouve des certificats CA appropriés à côté de votre certificat D'entité finale. (in PrivateKeyEntry).

Vous devez importer les certificats ensemble, comme une chaîne, contre l'entrée de votre clé privée est. Pour ce faire, concaténez les certificats ensemble dans un fichier texte (encodé PEM), votre serveur cert d'abord, suivi par le cert utilisé pour l'émettre, et ainsi de suite. Ensuite, importez ce fichier dans votre keystore en utilisant ce pseudonyme de clé privée. (C'est exactement le même problème que dans cette question, mais avec un serveur certificat.)

(Je ne suis pas sûr que votre CA vous donne déjà votre fichier cert en tant que chaîne, mais en général, vous obtenez au moins votre cert dans un fichier, et le CA intermédiaire Cert dans un autre. Le document auquel vous faites référence semble trompeur parce qu'il ne fait pas mention de plus d'un bloc entre --BEGIN/END CERT--, pourtant leur exemple screenshot a une longueur de certificat de 4 contre ce simple alias.)

@sauteur avec slalom souligné dans un commentaire sur votre question, vous n'avez pas besoin la "racine" certificat d'autorité de certification (celui qui s'est auto-signé) dans cette chaîne, depuis votre client approuve déjà, ou il n'a aucune raison de lui faire confiance lorsque vous l'envoyer. Ce n'est pas mal de l'avoir dans sa chaîne, mais c'est inutile, et ça pourrait ajouter un peu de réseau aérien.

4
répondu Bruno 2017-05-23 11:33:24

Vous essayez d'ajouter un certificat et attendre que ça sera la clé privée - sa confusion entre deux choses différentes.

généralement, lorsque vous créez keystore (.jks) comprennent que la clé privée à l'intérieur. Si son vide (supprimé)vous devez générer bundle (.P12) à partir de votre clé et de vos certificats.

pour créer une nouvelle clé libre et un nouveau certificat, vous pouvez utiliser cette implémentation d'openSSl https://zerossl.com.

Alors, vous avez une clé et certificat que vous devez générer (.p12) fichier de paquet: (sur la machine linux)

openssl pkcs12 -export -in [filename-certificate] -inkey [filename-key] -name [host] -out [filename-new-PKCS-12.p12]

Maintenant, il suffit d'ajouter le fichier de package (.P12) à un keystore (.jks) en exécutant la commande suivante:

keytool -importkeystore -deststorepass [password] -destkeystore [filename-new-keystore.jks] -srckeystore [filename-new-PKCS-12.p12] -srcstoretype PKCS12
3
répondu Eitan Rimon 2018-01-11 10:11:54