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