¿Cómo generar el almacén de claves para el certificado firmado de raíz?

3

Necesito crear el almacén de claves y el almacén de confianza con certificados firmados de raíz.

Tengo estos archivos (en este paso son idénticos para el cliente y para el servidor):

  1. client_cert.pem

  2. client_prv_key.pem

  3. root_cert.pem

  4. contraseña_cliente digamos 12345

Crearé el almacén de confianza con el certificado del cliente. Ahora necesito crear keystore. Intenté esto:

openssl pkcs12 -export -inkey root_cert.pem -in client_cert.pem -out client.p12

Esto da como resultado un error: " unable to load private key ".

El siguiente comando, después de crear el archivo .p12 es (cuando el comando openssl finalizará correctamente):

keytool -importkeystore -srckeystore client.p12 -srcstoretype pkcs12 -destkeystore client.jks -deststoretype jks

¿Cuál debería ser el comando para crear un almacén de claves con certificados con raíz firmada? ¿Cómo debo compilar el archivo .p12 con el certificado raíz firmado?

También, para la autenticación mutua en Java truststore es necesario. Después de probar algunas opciones, la forma correcta de crear el almacén de confianza es: (12345 es client_password que usé en todos los lugares donde se requería contraseña)

keytool -importcert -trustcacerts -keystore client_truststore.jks -storetype jks -storepass 12345 -file root_cert.pem

Donde 12345 es client_password (que usé en todos los lugares donde se requería contraseña)

    
pregunta KerenSi 02.08.2015 - 14:23
fuente

1 respuesta

1

Suponiendo que sus nombres de archivo sean precisos, por lo que client_cert.pem y client_prv_key.pem realmente contienen el certificado de cliente y privatekey respectivamente en formato PEM:

openssl pkcs12 -export -in client_cert.pem -inkey client_prv_key.pem -certfile root_cert.pem -out client.p12
# prompts for the input-key passphrase, then the output passphrase (twice)

# to specify passphrase on commandline for client_prv_key -passin pass:xyz
# similarly passphrase on commandline for the output -passout pass:xyz
# however these make the password(s) visible in ps or similar on most OSes,
# and usually visible in your shell (or CMD) history, which is often insecure

Alternativamente, puede proporcionarlos todos en la entrada estándar en el orden correcto :

cat client_prv_key.pem client_cert.pem root_cert.pem | openssl pkcs12 -export -out client.p12
# same options for passphrase

PS- NO ingrese una contraseña vacía para el PKCS12. OpenSSL te permite crearlo aunque sea una tontería, pero Java no puede descifrarlo, lo que anula tu propósito.

    
respondido por el dave_thompson_085 05.08.2015 - 06:57
fuente

Lea otras preguntas en las etiquetas