Convertir certificado PFX de IIS a uno valido para Apache

Sábado 11 de marzo de 2017, por Aitor Roma Vázquez

Algunas veces tenemos un certificado SSL que estaba funcionando por ejemplo en un servidor IIS en formato p7b y pbx y nos gustaría por las razones que sea poder aprovechar ese certificado y usarlo en un servidor con Apache , Nginx o cualquier servidor que no soporte directamente los certificados nombrados anteriormente.

PBX es como una especie de contenedor que contiene la clave privada y el certificado y el fichero P7B es ka clave pública de la entidad certificadora lo que se conoce como la CA.

Partimos en este caso de los siguientes ficheros obtenidos de exportar el certificado de Internet Information Server.

  • gd-g2_iis_intermediates.p7b
  • WildcardCPNL2016_exportat.pfx

Nuestra idea es convertir estos ficheros en los siguientes validos para cualquier servidor Unix.

  • ca_certificate.cert ( Certificado de intercambio )
  • server.key ( Clave Privada )
  • server.crt ( Certificado del dominio )

Generar CA-Bundle

El fichero de intercambio esta creado en formato PKCS7 para transformarlo debemos remplazar el principio y final del certificado para que en vez de poner PKCS7 ponga certificate y poder de esta forma poder transformarlo.

Este comando remplaza PKCS7 por CERTIFICATE generando un nuevo fichero certificate_bundle.cer

# sed  's|PKCS7|CERTIFICATE|g' gd-g2_iis_intermediates.p7b  > certificate_bundle.cer

Ahora transformamos ese certificado certificate_bundle.cer en uno valido llamado ca_certificate.cert que podremos usar en nginx o apache.

# openssl pkcs7 -print_certs -in certificate_bundle.p7b -out ca_certificate.cert

Extraer KEY

Con este comando extraemos la clave privada del certificado PFX

# openssl pkcs12 -in WildcardCPNL2016_exportat.pfx -nocerts -out key.pem -nodes

Extraer Cert

Con este comando extraemos el certificado del fichero PBX.

# openssl pkcs12 -in WildcardCPNL2016_exportat.pfx -nokeys -out server.crt

Generar Clave RSA a traves de la key

Por tal de que funcione nuestro certificado es necesario generar una nueva firma mediante RSA para eliminar la password podemos hacerlo así.

# openssl rsa -in key.pem -out server.key

Comentar este artículo