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

cette question a déjà une réponse ici:

  • comment importer un certificat x509 existant et une clé privée dans Java keystore à utiliser dans SSL? 10 réponses

j'ai utilisé les étapes suivantes pour créer un nouveau Java keystore avec une paire de clé privée / publique pour être utilisé par un Java serveur (interne) avec TLS. Veuillez noter que le certificat est autosigné:

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

openssl genrsa -aes256 -out server.key 1024

2) générer une demande de cert pour CA

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

3) générer le temps d'expiration auto-signé 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 autosigné) dans un nouveau JKS

cela fonctionne mais je voudrais implémenter la dernière étape sans utiliser d'interface graphique.

je sais comment importer le certificat auto signé seulement:

// 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

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

70
demandé sur kingston 2013-07-17 12:52:45

2 réponses

avec votre clé privée et votre certificat public, vous devez d'abord créer un clavier 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

si ce n'était pas un certificat auto-signé, vous voudriez probablement suivre cette étape avec l'importation de la chaîne de certificat menant au certificat CA de confiance.

168
répondu gtrig 2013-07-17 21:31:03

un keystore a besoin d'un fichier keystore. La classe KeyStore nécessite une FileInputStream . Mais si vous fournissez null (au lieu de FileInputStream instance) un keystore vide sera chargé . Une fois que vous créez un keystore, vous pouvez vérifier son intégrité en utilisant keytool .

le code suivant crée une clé vide avec le 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 la clé de le certificat est très facile. Check-out ce lien pour le code de l'échantillon.

0
répondu Santosh 2013-07-17 09:34:14