Importar un par de claves públicas privadas a un almacén de claves

4

He creado un par de claves privadas públicas utilizando la clase KeyPairGenerator en Java. A partir de este par de claves he generado la solicitud de CSR utilizando la clase PKCS10 que se ha enviado a una CA para su verificación. La pregunta es ¿cómo puedo cargar este par de claves privadas públicas en un almacén de claves? No puedo usar KeyStore.SetKeyEntry, ya que requiere un parámetro de certificado junto con la clave privada.

Pensé que tendría que esperar a que la CA envíe un certificado que luego debería usarse para cargar el par de claves. Pero si creo el almacén de claves utilizando el comando keytool -

keytool -genkey -keyalg RSA -keysize 2048 -sigalg sha1withRSA -alias aliasname -validity 365 -keystore keystorename

y luego cargue este almacén de claves en la clase de almacén de claves de Java, el objeto de almacén de claves contiene una entrada privada y una entrada de certificado. ¿Cómo es esto posible sin obtener un certificado de la CA.

    
pregunta DanMatlin 06.08.2013 - 06:18
fuente

2 respuestas

1

Cuando creas un par de claves pública / privada con código Java ( KeyPairGenerator ), el par de claves normalmente existe solo en la RAM. Toda la arquitectura de criptografía de Java es extensible y es posible usar una instancia específica KeyPairGenerator que guarda la clave privada "en algún lugar", pero, en general, debe organizar el guardado usted mismo, por ejemplo. con la clase KeyStore o más manualmente con archivos explícitos (consulte esta respuesta por ejemplo).

En cualquier caso, la solicitud PKCS # 10 enviada a la CA solo contiene la clave pública; la AC nunca aprende la clave privada y, por lo tanto, no puede devolvérsela.

La utilidad de línea de comandos keytool puede hacer la parte de almacenamiento por sí misma. En el formato de "almacén de claves", las claves privadas no existen solas sino que solo están vinculadas a un certificado, por lo que la utilidad keytool generará un certificado autofirmado que acompaña a la clave privada. Es por esto que este comando:

keytool -genkeypair -keyalg RSA -keysize 2048

le hará algunas preguntas, incluida una contraseña (para cifrar la propia clave privada) y algunas cosas personales como su nombre y país: estas son para completar los campos de certificado autofirmado.

Cuando obtenga el certificado de la CA, puede importarlo en su almacén de claves, reemplazando el certificado autofirmado. El "alias de clave" se utiliza para designar la clave privada específica que desea utilizar. Consulte esta publicación de blog para obtener información detallada sobre los comandos involucrados.

    
respondido por el Thomas Pornin 06.08.2013 - 14:44
fuente
1

Al crear un almacén de claves con la herramienta de claves de Java, se genera un par de claves y el certificado se firma con la propia clave privada. Por lo tanto, tiene un certificado autofirmado en este caso.

Puedes verificar esto con el comando

keytool -list -v -keystore <keystore>

El primer certificado que se muestra debe tener el mismo Propietario y Emisor.

    
respondido por el Uwe Plonus 06.08.2013 - 08:28
fuente

Lea otras preguntas en las etiquetas