utiliza respuesta recomienda públicas propietario permitida opcion modificar migrar las kit herramienta formato ejemplo desarrollo crear coinciden claves certificados almacén administración java ssl x509certificate keytool

respuesta - Importación del par de clave privada/certificado público en Java KeyStore



las claves públicas en la respuesta y en el almacén de claves no coinciden (2)

Utilicé los siguientes pasos para crear un nuevo almacén de claves Java con un par de claves privadas / públicas para ser utilizado por un servidor Java (interno) con TLS. Tenga en cuenta que el certificado es autofirmado:

1) Generar clave con AES256

openssl genrsa -aes256 -out server.key 1024

2) Generar solicitud de certificado para CA

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

3) Generar tiempo de caducidad auto-firmado 10 años

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

4) Use un programa como KeyStoreExplorer para importar el par (clave privada y certificado autofirmado) en un nuevo JKS

Esto funciona, pero me gustaría implementar el último paso sin usar una GUI.

Sé cómo importar el certificado autofirmado solo:

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

Entonces, la pregunta es: ¿cómo puedo crear una Java KeyStore e importar tanto el certificado con la clave pública como la clave privada sin usar una GUI?


Con su clave privada y certificado público, primero debe crear un almacén de claves PKCS12 y luego convertirlo 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

Para verificar el contenido de JKS, puede usar este comando:

keytool -list -v -keystore mykeystore.jks

Si no se trata de un certificado autofirmado, probablemente desee seguir este paso con la importación de la cadena de certificados que conduce al certificado de CA de confianza.


Un almacén de claves necesita un archivo de almacén de claves. La clase KeyStore necesita un FileInputStream . Pero si proporciona un nulo (en lugar de la instancia de FileInputStream ) , se cargará un almacén de claves vacío . Una vez que crea un almacén de claves, puede verificar su integridad utilizando la keytool claves.

El código siguiente crea un almacén de claves vacío con contraseña vacía

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

Una vez que tenga el almacén de claves, importar el certificado es muy fácil. Consulte este enlace para obtener el código de muestra.