2017-06-27 2 views
-2

Voici mon code pour générer un certificat SSL à l'aide Let de Crypter (basé sur https://github.com/zero11it/acme-client):Get PrivateKey de X509Certificate

AcmeChallengeListener challengeListener = new HttpChallengeListener(sessionToken, appObjectId, userId, domains[0], ""); 
Acme acme = new Acme(CA_STAGING_URL, new DefaultCertificateStorage(true), true, true); 
X509Certificate cert = acme.getCertificate(domains, AGREEMENT_URL, contacts, challengeListener); 
String fullchain = CertificateHelper.x509ToBase64PEMString(cert); 

est-il un moyen d'obtenir le PrivateKey et aussi l'obtenir sous forme de chaîne avec le -----BEGIN PRIVATE KEY----- et -----END PRIVATE KEY-----? Donc, il peut être téléchargé par notre application à notre serveur NGINX.

+3

D'une manière générale, il n'y a pas moyen d'obtenir un privé clé sur un certificat X509. Un certificat comprend les parties publiques des informations d'identification (par exemple, l'identité du détenteur, les émetteurs, les autorisations associées au certificat et son contenu public). Il n'y a rien de privé dans un certificat. (Votre clé privée peut être associée à votre certificat dans un fichier de clés, mais le certificat lui-même ne contient pas de clé privée). – GPI

+1

Comment avez-vous généré la paire de clés? – Henry

+0

La classe de bibliothèque Acme le fait – xybrek

Répondre

1

La solution a été de modifier la bibliothèque et d'exposer le stockage du certificat comme celui-ci:

public CertificateStorage getCertificateStorage() { return certificateStorage; }

De là, l'application peut obtenir le PrivateKey