0

Gestionar un certificado como PrivateKeyEntry

Por lo general cuando queremos gestionar un certificado aportado por una empresa certificadora como puede ser Globalsign o Verisign podemos encontrarnos con el problema de que no se importa correctamente, es decir, que se importa como trustedCertEntry y eso no es correcto siempre.

Vamos a intentar explicar paso a paso como gestionar todo el proceso para que no tengamos este problema.

Imprescindible tener en nuestro sistema Java 1.6+ y OpenSSL de lo contrario no podremos hacerlo.

Para que una empresa de las anteriores mencionadas, hemos de generar un CSR y mediante el mismo, nos generarán un CRT (el certificado en cuestión).

Pues para generar este fichero en lugar de usar el Keytools de JAVA que SOLO genera el CSR usaremos el OpenSSL ya que nos permite exportar la KEY privada.

openssl req -out CSR_FILE.csr -new -newkey rsa:2048 -nodes -keyout PRIVATE_KEY.key

Ahora remitiremos el fichero CSR para que puedan así facilitarnos nuestro querido certificado.

Cuando ya tengamos el certificado en cuestión, si lo importamos tal cual vamos a ver que el certificado aparece como trustedCertEntry.

keytool -import -alias ALIAS_DOMINIO -keystore KEYSTORE.jks -trustcacerts -file CRT_FILE.crt

Evidentemente, lo queremos como PrivateKeyEntry que por eso tenemos ese título, ¿no?

Pues entonces vamos a tener que hacer que este CRT pase por otro formato para poder importarlo como una clave privada.

Al convertir el CRT mediante el KEY en un fichero P12 lo que hacemos es que lo convertimos en una especie de KEYSTORE (o llavero para llaves).

openssl pkcs12 -export -in CRT_FILE.crt -inkey PRIVATE_KEY.key -name "ALIAS" -out FICHERO.p12

Hay que destacar el hecho de que el ALIAS ha de ser el que queramos que tenga en el KEYSTORE destino, porque de lo contrario lo cargará con otro nombre.

Ahora que el P12 ha sido creado con éxito, hay que importarlo al KEYSTORE / JKS correspondiente.

Aunque pueda parecer extraño, para esto sí que vamos a usar el Keytools de JAVA.

keytool -importkeystore -srckeystore FICHERO.p12 -destkeystore KEYSTORE.jks -srcstoretype pkcs12 -deststoretype jks

En caso de que el ALIAS en cuestión ya se encuentre cargado en el sistema, nos preguntará si queremos sobrescribir ese dato.

En caso afirmativo saldrá algo parecido a esto, quedando ya correcto el certificado:

Existing entry alias client exists, overwrite? [no]:  y
Entry for alias client successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled