Transferir certificado SSL de windows a Linux Apache

Después de investigar un poco he conseguido transferir un certificado SSL desde un windows server 2008 R2 a un Apache2 en Linux Ubuntu. Aquí va la receta…

Primero se exporta el certificado desde el IIS en el servidor windows a formato PFX, esto es algo que siempre deberías hacer para tener una copia de seguridad del certificado.

Ejecutar mmc.exe
Clic en el menú ‘Consola’ y selecciona ‘Agregar/Quitar complemento’.
En la lista de complementos selecciona el complemento «Certificados» y haces click en «Agregar»
Selecciona ‘Cuenta de equipo’y haz click en ‘Siguiente’
Selecciona ‘Equipo Local’ y click en Finalizar.
Clic en Aceptar
Expandir el menú para ‘Certificados’ y click en la carpeta ‘Personal’.
Botón derecho en el certificado que quieras exportar y seleccionas «Todas las tareas > Exportar»

Aparece un asistente. Asegúrate de chequear la opción para incluir la clave privada y continúa a través del asistente hasta que obtengas un fichero .PFX

A continuación ejecuta, desde Linux, el comando openssl para extraer la clave privada y el fichero con el certificado.

# Exportar la clave privada desde el fichero pfx
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
# Exportar el certificado desde el fichero pfx
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
# Esto elimina la frase de seguridad de la clave privada para que Apache no la solicite cuando se inicie.
openssl rsa -in key.pem -out server.key

Ahora, un paso extra para hacer que el certificado funcione, necesitamos incluir en el fichero de configuracion del host virtual las siguientes lineas:

SSLEngine on
SSLOptions +StrictRequire
SSLCertificateFile /path/to/certificate/cert.pem
SSLCertificateKeyFile /patch/to/key/server.key

El fichero de host virtual estará localizado normalmente en “/etc/apache2/sites-available/virtualhostname.conf”
reiniciar apache con el comando

sudo apache2ctl restart

Commenting area

  1. Buenas tardes, esta bien explicado pero no funciona, no coge el certificado. yo lo hice de esta manera con un windows server 2012 R2.
    openssl pkcs12 -in prueba.pfx -nocerts -out prueba.key
    openssl pkcs12 -in prueba.pfx -nocerts -out prueba.crt
    [sistemas@esvhcor]$ openssl x509 -text -inform DER -in prueba.crt
    unable to load certificate
    139966528706464:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1199:
    139966528706464:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:374:Type=X509

    Hay alguna paso que se ha saltado, la prueba que estoy haciendo es sobre un servidor gitlab.

    Un saludo y gracias.
    Daniel

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Copyright 2018 Javier Antó | Javi