Es bastante sencillo, usando jdk6 al menos ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-nombre 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
Ingrese la contraseña del almacén de claves:
Re-ingrese nueva contraseña:
Ingrese la contraseña clave para
(VOLVER si es la misma que la contraseña del almacén de claves):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
Introduzca la contraseña del almacén de claves: asdasd
Certificado:
Datos:
Versión: 3 (0x2)
Número de serie: 1237334757 (0x49c03ae5)
Algoritmo de firma: dsaWithSHA1
Emisor: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Validez
No antes: 18 de marzo 00:05:57 GMT de 2009
No después: 16 de junio 00:05:57 GMT de 2009
Sujeto: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Asunto Información de clave pública:
Algoritmo de clave pública: dsaEncryption
DSA Public Key:
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
Ingrese la contraseña del almacén de claves de destino:
Re-ingrese nueva contraseña:
Ingrese la contraseña del almacén de claves de origen:
Entrada para alias foo importada con éxito.
Comando de importación completado: 1 entradas importadas correctamente, 0 entradas fallidas o canceladas
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
Ingrese la contraseña de importación:
MAC verificado OK
Ingrese la frase de paso PEM:
Verificación: ingrese la frase de paso PEM:
bash $ openssl x509 -text -in foo.pem
Certificado:
Datos:
Versión: 3 (0x2)
Número de serie: 1237334757 (0x49c03ae5)
Algoritmo de firma: dsaWithSHA1
Emisor: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Validez
No antes: 18 de marzo 00:05:57 GMT de 2009
No después: 16 de junio 00:05:57 GMT de 2009
Sujeto: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Asunto Información de clave pública:
Algoritmo de clave pública: dsaEncryption
DSA Public Key:
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ openssl dsa -text -in foo.pem
leer clave DSA
Ingrese la frase de paso PEM:
Clave privada: (1024 bit)
priv:
00: 8f: b1: af: 55: 63: 92: 7c: d2: 0f: e6: f3: a2: f5: ff:
1a: 7a: fe: 8c: 39: dd
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
Terminas con:
- foo.jks: almacén de claves en formato java.
- foo.p12: almacén de claves en formato PKCS # 12.
- foo.pem: todas las claves y certificados del almacén de claves, en formato PEM.
(Este último archivo se puede dividir en claves y certificados si lo desea).
Resumen del comando: para crear un almacén de claves JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Resumen del comando: para convertir el almacén de claves JKS en el almacén de claves PKCS # 12 y luego en el archivo PEM:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
si tiene más de un certificado en su almacén de claves JKS y desea exportar solo el certificado y la clave asociados con uno de los alias, puede usar la siguiente variación:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Resumen del comando: para comparar el almacén de claves JKS con el archivo PEM:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem