Saltar al contenido

Cómo importar un certificado X.509 existente y privado key en el almacén de claves de Java para usar en SSL?

Nuestros programadores estrellas han agotado sus provisiones de café, investigando diariamente por la resolución, hasta que Miguel halló el hallazgo en GitLab por lo tanto ahora la comparte con nosotros.

Solución:

Utilicé los siguientes dos pasos que encontré en los comentarios/publicaciones vinculados en las otras respuestas:

Paso uno: Convierta el certificado x.509 y key a un archivo pkcs12

openssl pkcs12 -export -in server.crt -inkey server.key 
               -out server.p12 -name [some-alias] 
               -CAfile ca.crt -caname root

Nota: Asegúrese de poner una contraseña en el archivo pkcs12; de lo contrario, obtendrá un null excepción de puntero cuando intenta importarlo. (Por si a alguien más le ha pasado este dolor de cabeza). (Gracias jocull!)

Nota 2: Es posible que desee agregar el -chain opción para conservar la cadena de certificados completa. (Gracias Mafuba)

Paso dos: Convierta el archivo pkcs12 en un almacén de claves de Java

keytool -importkeystore 
        -deststorepass [changeit] -destkeypass [changeit] -destkeystore server.keystore 
        -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass some-password 
        -alias [some-alias]

Acabado

OPCIONAL Paso cero: crear un certificado autofirmado

openssl genrsa -out server.key 2048
openssl req -new -out server.csr -key server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

¡Salud!

Keytool en Java 6 tiene esta capacidad: importar privado keys en un almacén de claves Java usando keytool

Aquí están los detalles básicos de esa publicación.

  1. Convierta el certificado existente en un PKCS12 mediante OpenSSL. Se requiere una contraseña cuando se le solicite o el segundo paso se quejará.

    openssl pkcs12 -export -in [my_certificate.crt] -inkey [my_key.key] -out [keystore.p12] -name [new_alias] -CAfile [my_ca_bundle.crt] -caname root
    
  2. Convierta el PKCS12 en un archivo de almacén de claves de Java.

    keytool -importkeystore -deststorepass [new_keystore_pass] -destkeypass [new_key_pass] -destkeystore [keystore.jks] -srckeystore [keystore.p12] -srcstoretype PKCS12 -srcstorepass [pass_used_in_p12_keystore] -alias [alias_used_in_p12_keystore]
    

Lo crea o no, keytool no proporciona una funcionalidad tan básica como importar datos privados. key al almacén de claves. Puede probar esta solución fusionando el archivo PKSC12 con privado key a un almacén de claves:

keytool -importkeystore 
  -deststorepass storepassword 
  -destkeypass keypassword 
  -destkeystore my-keystore.jks 
  -srckeystore cert-and-key.p12 
  -srcstoretype PKCS12 
  -srcstorepass p12password 
  -alias 1

O simplemente use KeyMan de IBM, que es más fácil de usar para el manejo del almacén de claves en lugar de keytool.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *