72 votes

Importation de la paire clé privée/certificat public dans le KeyStore Java

J'ai utilisé les étapes suivantes pour créer un nouveau keystore Java avec une paire de clé privée/publique à utiliser par un serveur Java (interne) avec TLS. Notez que le certificat est auto-signé :

1) Générer la clé avec AES256

openssl genrsa -aes256 -out server.key 1024

2) Générer une demande de certificat pour l'AC

openssl req -x509 -sha256 -new -key server.key -out server.csr

3) Générer une signature personnelle avec une date d'expiration de 10 ans.

openssl x509 -sha256 -days 3652 -in server.csr -signkey server.key -out selfsigned.crt

4) Utilisez un programme comme KeyStoreExplorer pour importer la paire (clé privée et certificat auto-signé) dans un nouveau JKS

Cela fonctionne mais j'aimerais mettre en œuvre la dernière étape sans utiliser d'interface graphique.

Je sais comment importer le certificat auto-signé uniquement :

// create the keystore and import the public key. THIS WILL NOT IMPORT THE PRIVATE KEY SO THE KEYSTORE CAN'T BE USED ON THE SERVER TO MAKE THE TLS CONNECTION
/usr/java/jdk1.6.0_45/bin/keytool -import -alias myservercert -file server.crt -keystore mykeystore.jks

La question est donc la suivante : comment puis-je créer un KeyStore Java et importer à la fois le certificat avec la clé publique et la clé privée sans utiliser une interface graphique ?

171voto

gtrig Points 3127

Avec votre clé privée et votre certificat public, vous devez d'abord créer un keystore PKCS12, puis le convertir en JKS.

# Create PKCS12 keystore from private key and public certificate.
openssl pkcs12 -export -name myservercert -in selfsigned.crt -inkey server.key -out keystore.p12

# Convert PKCS12 keystore into a JKS keystore
keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert

Pour vérifier le contenu du JKS, vous pouvez utiliser cette commande :

keytool -list -v -keystore mykeystore.jks

S'il ne s'agissait pas d'un certificat auto-signé, vous voudriez probablement suivre cette étape en important la chaîne de certificats menant au certificat CA de confiance.

0voto

Santosh Points 9794

Un keystore a besoin d'un fichier keystore. Le site KeyStore a besoin d'un FileInputStream . Mais si vous fournissez null (au lieu de FileInputStream instance) un le keystore vide sera chargé . Une fois que vous avez créé un keystore, vous pouvez vérifier son intégrité en utilisant keytool .

Le code suivant crée un keystore vide avec un mot de passe vide.

  KeyStore ks2 = KeyStore.getInstance("jks");
  ks2.load(null,"".toCharArray());
  FileOutputStream out = new FileOutputStream("C:\\mykeytore.keystore");
  ks2.store(out, "".toCharArray());

Une fois que vous avez le keystore, l'importation du certificat est très facile. Commander ce lien pour l'exemple de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X