Migrar un certificado SSL

4 junio 2012 at 18:27 by Adrián Pérez

SSL CertificateUna pregunta que me ronda por la cabeza es si es realmente necesario realizar algún tipo de actuación, al migrar una aplicación de un servidor a otro, en cuanto al certificado SSL estándar (de los que no realizan validación contra la autoridad certificadora, una vez emitido el certificado) se refiere, si no cambia el dominio y se mantiene el entorno (léase, si migramos de un servidor Red Hat/Apache a un CentOS/Apache, por ejemplo).

Pongamos el ejemplo de una página web con un certificado SSL para el dominio www.midominio.com. De esta manera, al entrar a https://www.midominio.com, se validará el certificado SSL. Si tenemos este certificado en un servidor en Amazon EC2 que resuelve el dominio www.midominio.com, y queremos migrar este servidor a un nuevo hosting, por ejemplo RackSpace, ¿tendríamos que realizar alguna actuación con el certificado SSL? Para generarlo, bien que tuvimos que generar una petición CSR desde el servidor de Amazon EC2. ¿O bien bastaría con copiar los archivos .key y .crt al nuevo servidor en RackSpace?

StackOverflow y GoDaddy

En StackOverflow se comenta que será necesario generar una nueva petición CSR en el nuevo servidor, para regenerar el certificado (sin coste). En GoDaddy también insisten en lo mismo, aquí, de donde he sacado el siguiente extracto:

"Deberá restablecer la clave de su certificado SSL si traslada su sitio web a un servidor nuevo"

GeoCerts

Sin embargo, ésto no siempre es cierto, puesto que por ejemplo GeoCerts indica que se puede instalar el mismo certificado SSL en múltiples servidores, con lo cual, en caso de migración, no haría falta volver a generar la petición CSR en el nuevo servidor para regenerar el certificado:

Can I install the same SSL certificate on multiple servers?
Yes. Go crazy! Install your SSL certificate on as many servers as you like with our unlimted server licensing policy.

Certisign

Lo mismo pasa con Certisign.com.br, los cuales indican que para migrar un certificado SSL de un servidor a otro, basta con copiar los archivos .crt y .key al nuevo servidor, sin necesidad de regenerar el certificado con una nueva CSR. Aquí lo explican. Personalmente, he podido comprobar como con un certificado SSL de Certisign, no he tenido problemas mediante este procedimiento.

Digicert

A pesar de la recomendación de GoDaddy, también he probado a copiar los archivos .crt y .key para un certificado firmado por GoDaddy de un servidor a otro, y he verificado el funcionamiento con herramientas online como digicert.com.

RackSpace

Para intentar aclarar ésto, he hablado con RackSpace, partiendo de un entorno con múltiples servidores web clónicos, detrás de un balanceador. En este caso, parece claro que si todos los servidores balanceados muestran la misma web con el mismo certificado, no se deberá generar una petición CSR para cada servidor, si no que el mismo certificado se deberá copiar en todos los servidores. Éste punto me lo ha confirmado RackSpace:

"It is not necessary to generate a new certificate for each server within the context of a load balancer environment. If you're utilizing SSL passthrough on the load balancer, then it would actually be optimal for all the servers to utilize the same certificate."

También me ha confirmado que incluso en un cambio de entorno, sería posible mantener el certificado sin necesidad de generar una nueva petición CSR:

"When migrating to a new environment (such as Apache to IIS), it is still possible to retain the same certificate and key, however a conversion of format may be require. Apache utilizes PEM, while IIS utilizes PFX. It is possible to convert between these two format utilizing the openssl command."

GoDaddy

Sin embargo, el soporte técnico de GoDaddy insiste en que en cualquier caso, se ha de realizar una nueva petición CSR:

"Un CSR nuevo en necesario cuando se migra de un servidor a otro no importa el entorno"

Resumiendo

Parece ser que no es necesario generar una nueva petición CSR para rgenerar el certificado, si únicamente se está migrando de servidor, sin ningún cambio adicional. Sin embargo, la mayoría de proveedores recomiendan (o más bien piden) generar siempre una petición CSR en el servidor de destino, imagino, que para curarse en salud ante cualquier problema .

¿Alguien tiene algo más de información al respecto?

Flickr! Foto por AMagill