Manual de instalación de Viafirma Documents

Generación del par de claves (CSR)

(Rev.03-abr-2018)

Veamos los pasos a realizar para generar el csr para la creación del certificado.

1.- CSR Pattern

Para la generación del CSR se necesitarán una serie de datos que obedecen a un patrón gestionado por la CA. Por ejemplo:

* CN (common name, generalmente compuesto por la suma de varios atributos, como O, OU, etc; la CA nos deberá confirmar el patrón para informar este valor)
* SN (si procede; serialnumer, por ejemplo, el CIF de la compañía; la CA nos deberá confirmar el patrón para informar este valor)
* O (si procede; organization, por ejemplo, Acme Inc.; la CA nos deberá confirmar el patrón para informar este valor)
* OU (si procede; departamente, por ejemplo, Einvoice; la CA nos deberá confirmar el patrón para informar este valor)
* E (si procede; email del titular del certificado; la CA nos deberá confirmar el patrón para informar este valor)
* ST (si procede; state, por ejemplo Sevilla; la CA nos deberá confirmar el patrón para informar este valor)
* C (si procede; country, por ejemplo ES; la CA nos deberá confirmar el patrón para informar este valor)
* Validez (se puede informar en días o años; la CA nos deberá confirmar el patrón para informar este valor)
* Longitud de clave (generalmente 2048; la CA nos deberá confirmar este valor)

2.- Generación del par de claves

Nos ayudaremos de keytool para realizar la generación de par de claves dentro de un almacén de certificado, en nuestro caso lo haremos en un JKS (java keystore), para obtener el CSR (solicitud de firma de certificado) que enviaremos a la CA para su firma.

keytool -genkeypair -alias alias_del_certificado -keyalg RSA -keysize LONGITUD_DE_CLAVE_PROPORCIONADO -sigalg SHA256withRSA -keystore cacerts.jks -dname "CN=CN_PROPORCIONADO, SERIALNUMBER=SN_PROPORCIONADO, O=O_PROPORCIONADO, OU=OU_PROPORCIONADO, EMAIL=E_PROPORCIONADO, ST=ST_PROPORCIONADO, C=C_PROPORCIONADO" -validity VALIDEZ_PROPORCIONADA

Tras ejecutar esta instrucción nos solicitará introducir la contraseña de acceso al JKS utilizado y la contraseña para la protección del uso del certificado.

NOTA 1: en caso de que alguno de los campos proporcionados en el punto 1 contenga coma será necesario
escaparla reemplazando la , por \,

Por ejemplo si el CN es VIAFIRMA, S.A. se debería escapar de la siguiente forma: CN=VIAFIRMA\, S.A.

NOTA 2: si el JKS referenciado no existiera se creará automáticamente.

3.- Exportación del CSR

Una vez generado el CSR lo exportaremos con la siguiente instrucción en keytool:

keytool -certreq -alias alias_del_certificado -file certificado.csr -keystore cacerts.jks

Tras esto, para nuestro ejemplo tendríamos un fichero certificado.csr.

4.- Remitir CSR a la CA correspondiente

Una vez exportado el CSR será remitido a la CA correspondiente; a partir de su procesamiento, la CA nos devolverá el certificado (clave pública firmada) en distintos formatos posibles: .cer, .pem o .crt.

En nuestro ejemplo procesaremos un formato .crt devuelto por la CA, llamado para este ejemplo certificado.crt.

5.- Comprobar cadena de confianza

De manera opcional, debemos asegurarnos que el certificado generado esté debidamente asociado a su cadena de confianza. Para ello debemos confirmar con la CA correspondiente la jerarquía de la que depende el certificado.

Por ejemplo:

>rootCA.crt
 >>subCA.crt

La descarga de estos CRTs de la jerarquía normalmente es pública y fácilmente localizable en la página web de la propia CA, en caso contrario la CA nos debería aportar estas claves públicas (crt).

opcional: en el caso de que las claves públicas (crt) no estuvieran en formato DER (.crt), se pueden convertir con la siguiente instrucción:

* openssl x509 -in rootCA.pem -outform DER -out rootCA.crt
* openssl x509 -in subCA.pem -outform DER -out subCA.crt

6.- (opcional) Concatenar Jerarquía

Si procede, se podrán unir en un único certificado los dos o tres .crt de la Jerarquía, para ello podríamos ejecutar la siguiente instrucción:

cat certificado.crt subCA.crt rootCA.crt > cert-with-chain.der

7.- Importación del certificado (respuesta de la CA)

A partir de la respuesta de la CA, importaremos en el keystore el certificado, según nuestro ejemplo, cert-with-chain.der. El alias debe ser el mismo que asignamos en el paso 2 durante la creación del CSR (alias_del_certificado).

keytool -importcert -keystore cacerts.jks -alias alias_del_certificado -file cert-with-chain.der

Tras ejecutar esta instrucción nos solicitará introducir las contraseñas proporcionadas durante la creación del CSR (punto 2) asociadas al keystore y al certificado.

Llegados a este punto, el keystore correspondiente (ej. cacert.jks) ya contendrá el nuevo certificado generado y toda su jerarquía disponible para su uso a partir de su alias y contraseña.