Creando una CA raíz para emitir certificados de manera programática

0

Tengo que generar una CA raíz autofirmada y usarla para emitir certificados de forma programática. Soy nuevo en seguridad y certificados y creo que me faltan algunas piezas necesarias para hacer que todo funcione en conjunto.

A mi entender, necesito generar un certificado X509 usando Java keytool para actuar como CA raíz y luego usar su clave privada para firmar los nuevos certificados que estoy generando usando Bouncy Castle en tiempo de ejecución.

Generé un nuevo certificado usando keytool y el siguiente comando:

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

Cuando intenté leer este almacén de claves y el certificado programáticamente, descubrí que la clave privada del certificado no está almacenada en el almacén de claves o que no había forma de leer la clave privada.

Tengo las siguientes preguntas:

1) ¿Cómo genero una CA raíz utilizando keytool?

2) ¿Cuál debería ser el formato de salida de la CA raíz para que pueda leer la clave privada? ¿Mi enfoque actual de escribir el certificado en un almacén de claves es incorrecto?

    
pregunta Pranava Sheoran 06.11.2015 - 02:44
fuente

2 respuestas

2

Creo que estás haciendo la pregunta incorrecta. La pregunta correcta es "¿Debería alguien nuevo en seguridad trabajar en una CA raíz?" y la respuesta es "probablemente no".

Es muy probable que lo que esté haciendo exponga a todos los que dependen de su CA raíz a un alto riesgo de compromiso. Esto ha sido demostrado por compañías maduras como Dell (ver, por ejemplo, enlace )

Hay muchas formas en que las cosas van mal, que van más allá del alcance de una pregunta de ESS.

    
respondido por el Adam Shostack 05.06.2016 - 19:24
fuente
1
  1. Tu comando es correcto: keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
  2. keytool -list -v -keystore keystore.jks

Debería verse así:

Enter keystore password:  

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: selfsigned
Creation date: Nov 8, 2015
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=sdf, OU=sf, O=sf, L=sf, ST=sf, C=sf
Issuer: CN=sdf, OU=sf, O=sf, L=sf, ST=sf, C=sf
Serial number: 69aa218
Valid from: Sun Nov 08 12:34:47 CET 2015 until: Wed Nov 02 12:34:47 CET 2016
Certificate fingerprints:
     MD5:  FE:7C:97:C8:62:5E:C7:AA:8C:20:E9:7A:78:21:93:8A
     SHA1: 71:55:81:1C:AF:12:10:84:30:66:A2:35:BA:EC:AB:74:C0:11:43:6E
     SHA256: 89:E5:EC:5D:CE:BA:3B:13:02:0C:27:A6:FC:EC:B8:2B:48:9F:32:23:A8:10:5D:84:9A:CE:7F:F7:D6:E4:65:67
     Signature algorithm name: SHA256withRSA
     Version: 3

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 79 D9 C1 A6 17 32 97 B0   39 61 41 1F 23 F9 A8 00  y....2..9aA.#...
0010: 4A 32 F7 EA                                        J2..
]
]



*******************************************
*******************************************
    
respondido por el Seb B. 08.11.2015 - 12:39
fuente

Lea otras preguntas en las etiquetas