viernes, 10 de diciembre de 2021

Certificados en Java (6).Tipos y Conversión de certificados. KeystoreExplorer. contraseñas NO ASSCII

0. Introducción

Nos basamos en sslshopper , Serverfault , medium , Digicert 


Segun Mkyong java reconoce los formatos JKS o PKCS#12 pero no PEM.

Veamos algunos formatos de certificados

.csr: (Certificate Signing Request) Para pedir certificados a las entidades certificadoras (en adelante CA). Incluye detalles como: "subject, organization, state.." y la clave pública del certificado a firmar. Se firman pot la CA y se devuelve el certificado que es el certificado público (que incluye la clave pública pero no la privada). El certificado devueltopor la CA puede estar en varios formatos.

.pem: (Privacy Enhanced Mail)Es un contenedor. Puede incluir:

  • el certificado público ó
  • una cadena entera de certificados (clave pública + clave privada + certificados raiz (root)
.key: Suele ser un fichero en formato ".pem" y contiene solo la clave privada de un determinado certificado.

.pkcs12 .pfx .p12 :(Public Key Cryptography Standards PKCS variante 12) Es un contenedor protegido por contraseña que contiene los pares de certificados privados y públicos). Al contrario que los ficheros ".pem" el contenedor está completamente encriptado. 

Estos no son tan utilizados:

.der: Advertir que un fichero ".pem" es un ficcero ".der" codificado en Base64. 
Para convertir der (.crt .cer .der) a pem:

.cert .cer .crt: Es un certificado ".pem" (a veces ".der") con una extensión distinta (reconocible por Windows Explorer)

.p7b .keystore: (Public Key Cryptography Standards PKCS variante 7). Al contrario que los certificados ".pem", tiene una forma definida de incluir los "certification-path certificates".

.crl: Lista de revocación de certificados. Lo producen las CAs para desautorizar loos certificados a punto de expirar.

Los mas utilizados son PEM, PKCS7, PKCS12 y DER

1. Conversiones

Para convertir de p12 (.pfx .p12) a pem:

openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

Para convertir de p12 (.pfx .p12)  conteniendo una clave privada y certificados a pem:

openssl pkcs12 -in keystore-to-convert.pfx -out keystore-converted.pem -nodes
Para convertir de p12 (.pfx .p12)  a certificado pem(crt.pem) mas clave pem(key.pem) (stackoverflow):

openssl pkcs12 -in keystore-to-convert.pfx -out crt.pem -clcerts -nokeys 
openssl pkcs12 -in keystore-to-convert.pfx -out key.pem -nocerts -nodes
Para convertir un certificado pem (.pem .crt) con una clave privada (.key) y la cadena de certificados (.pem .crt)  a de p12 (.pfx .p12):

openssl pkcs12 -export -inkey privateKey.key -in cert.crt -certfile CACert.crt -out cert.pfx
  Siendo:
     privateKey.key: la clave privada 
     cert.cert : Certificado
     CACert: La cadena de certificados de la entidad certificadora

Para convertir un certificado pem (.pem .crt que contiene tanto al certificado como la cadena de certrificados de la entidad certificadora)  y una clave privada (.key) a de p12 (.pfx .p12) (Mkyong) con password "1234" :

openssl pkcs12 -export -inkey privateKey.key -in cert.crt -passout pass: 1234 -out cert.pfx

Para convertir der (.crt .cer .der) a pem:
openssl x509 -inform der -in file-to-convert.der -out converted-file.pem

Para convertir pem a der:

openssl x509 -outform der -in file-to-convert.pem -out converted-file.der
Para convertir p12 (PKCS#12 keystore) a jks (java keystore) IBM: OJO: Ver las observaciones!!
keytool -importkeystore -srckeystore <source_keystoreFile> -srcstoretype PKCS12 -destkeystore <destination_keystoreFile>  -deststoretype JKS -srcstorepass mysecret -deststorepass mysecret -srcalias myalias -destalias myalias -srckeypass mykeypass -destkeypass mykeypass -noprompt

Para convertir jks (java keystore) a p12 (PKCS#12 keystore) (Baeldung):
keytool -importkeystore -srckeystore jks_keystore.jks -destkeystore keystore.p12 -srcstoretype jks -deststoretype pkcs12

OBSERVACIONES: La herramienta keytool no admite contraseñas con caracteres NO ASCII como ñ, acentos, etc. Por tanto para convertir un certificado en formato p12 con una contraseña como "Cañón", no podemos utilizar keytool. Para ello utilizamos Keystore Explorer 

Tras seleccionar el certificado p12, nos pide la contraseña para poder verlo. Le damos "Cañón" en nuestro caso


Vemos el alias ss_profile y el tipo RSA



En el menú Tools > Change Keystore Type > JKS     Convertimos de p12 a JKS




Y le damos la misma contraseña (Cañón en nuestro caso.)

Ahora lo guardamos con otro nombre y extensión JKS (File > Save As ) y ya lo tenemos

No hay comentarios :

Publicar un comentario