LINUX

Cómo convertir y usar el certificado PKCS#12/PFX en Apache

conversión de certificado pfx

Cuando tenemos varios servidores y necesitamos usar el mismo certificado SSL, como en un entorno de balanceo de carga o cuando usamos certificados SSL comodín, deberá transferir los certificados entre servidores. La transferencia SSL de servidor a servidor normalmente será fácil si se realiza entre servidores del mismo tipo que servidores Linux o servidores Windows.

Pero el proceso se vuelve un poco más difícil cuando se trata de un servidor Windows a un servidor Linux. En este caso, necesitamos exportar los certificados SSL desde el servidor de Windows y almacenarlos en el archivo .pfx. Después de eso, necesitamos copiar este archivo .pfx (PKCS#12/) en el servidor Linux y convertir ese archivo a un formato de archivo compatible con Apache, como certificado individual, paquete de CA y archivos de clave privada, y lo usamos.

Esto también puede ser necesario al cambiar de empresa de hosting. Explicaré el proceso exacto con instrucciones paso a paso en este artículo sobre cómo puede usar con éxito un certificado .pfx de su servidor Windows en un servidor Linux que ejecuta Apache.

Diferencia entre archivo .pfx y .crt

Antes de comenzar con nuestro proceso de conversión, permítame darle un resumen rápido de la diferencia entre un archivo .pfx y un archivo .crt. Básicamente, un certificado (archivo .crt) es un contenedor para su clave pública. Incluye la clave pública, el nombre del servidor, información adicional sobre el servidor y una firma calculada por una autoridad certificadora (CA). Durante el protocolo de enlace SSL, el servidor envía su clave pública a un cliente, que en realidad contiene su certificado junto con varias otras cadenas de certificados.

Por otro lado, un archivo .pfx es un archivo PKCS#12 que parece una bolsa que puede contener muchos objetos con protección de contraseña opcional. Normalmente, un archivo PKCS#12 contiene un certificado (posiblemente con su conjunto correspondiente de certificados de CA) y la clave privada correspondiente.

Empecemos ahora con nuestro proceso de conversión.

Paso 1: transfiera el certificado pfx de su servidor Windows a nuestro servidor Linux

Primero, exporté mi certificado a un certificado .pfx desde el servidor de Windows para mi dominio puebe.com. Y copié ese archivo pfx en mi servidor Linux usando SCP desde mi sistema local a la carpeta «/transferred_certificates/». Puede usar FTP, SCP, wget o usar cualquiera de estos métodos para transferir el certificado pfx a su servidor Linux.

# transfered_certificates]# ll
-rw-r--r-- 1 root root 5409 Oct 9 10:02 c667cafbf01ffd7310db952e50eaf2b2.pfx

Paso 2: Convierta el archivo .pfx usando OpenSSL

Nuestro siguiente paso es extraer el certificado, la clave y el paquete de CA necesarios de este certificado .pfx para el dominio puebe.com. Podemos usar el comando OpenSSL para extraer estos detalles del archivo pfx. Veamos los comandos para extraer la información necesaria de este certificado pfx.

Extraer el certificado del archivo pfx

Podemos usar este comando para extraer los detalles del certificado para el dominio puebe.com del archivo pfx.

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -clcerts -nokeys -out puebe.com.crt
Enter Import Password:
MAC verified OK

Esto nos proporcionará nuestro archivo de certificado de dominio, es decir puebe.com.crt con un formato compatible que soporte Linux.

Extraer el archivo clave del archivo pfx

Podemos usar este comando para extraer los detalles clave del dominio puebe.com del archivo pfx.

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -nocerts -nodes -out puebe.com.key
Enter Import Password:
MAC verified OK

Esto nos dará nuestro archivo de clave de dominio a saber puebe.com.key

Extracción de la cadena de certificados del archivo pfx

Podemos usar este comando para extraer la cadena de detalles del certificado del archivo pfx.

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -out puebe.com-ca.crt -nodes -nokeys -cacerts
Enter Import Password:
MAC verified OK

Esto nos dará nuestra cadena de certificados para nuestro dominio puebe.com en el archivo puebe.com-ca.crt.

Copié estos archivos extraídos a mi carpeta de certificados en «/etc/pki/tls/certs/». Puede hacer esto si es necesario, pero si no, puede especificar directamente la ruta de la carpeta en la configuración de Apache donde extrajo estos archivos.

[root@li1005-45 certs]# ll puebe.com*
-rw-r--r-- 1 root root 3689 Oct 9 10:10 puebe.com-ca.crt
-rw-r--r-- 1 root root 1954 Oct 9 10:06 puebe.com.crt
-rw-r--r-- 1 root root 1828 Oct 9 10:07 puebe.com.key

Paso 3: Asigne el certificado SSL de dominio a Apache

Una vez que haya convertido el archivo .pfx, deberá copiar los archivos recién creados en su servidor Apache y editar su archivo de configuración de Apache para usarlos. Creé un host virtual para mi dominio en la carpeta /etc/httpd/conf.d/ para habilitar SSL e incluí estos archivos extraídos según fuera necesario. Consulte los detalles de mi host virtual a continuación:

[root@li1005-45 conf.d]# cat puebe_ssl.conf
<VirtualHost puebe.com:443>
DocumentRoot "/var/www/html/puebe.com/public_html/"
ServerName www.puebe.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

SSLCertificateFile /etc/pki/tls/certs/puebe.com.crt
SSLCertificateKeyFile /etc/pki/tls/certs/puebe.com.key
SSLCertificateChainFile /etc/pki/tls/certs/puebe.com-ca.crt

#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<Files ~ ".(cgi|shtml|phtml|php3?)$">
 SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
 SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" 
nokeepalive ssl-unclean-shutdown 
downgrade-1.0 force-response-1.0

# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log 
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

</VirtualHost>

Puede cambiar los nombres de los archivos y las rutas para que coincidan con los archivos certificados:
SSLCertificateFile debe ser su archivo de certificado principal para su nombre de dominio.
SSLCertificateKeyFile debe ser el archivo clave extraído.
SSLCertificateChainFile debe ser el archivo intermedio de la cadena de certificados.

Asegúrese de ejecutar una prueba de configuración y reiniciar el servicio de Apache una vez que haya terminado.

# apachectl configtest
Syntax OK
# service httpd restart

Ahora puede confirmar el certificado SSL de su dominio utilizando cualquiera de las herramientas de verificación SSL disponibles. O simplemente puede navegar por la URL >>https://puebe.com/. Revisé mi instalación de SSL en el enlace

>>https://www.sslshopper.com/ssl-checker.html#hostname=puebe.com

Así es como podemos transferir fácilmente certificados desde un servidor Windows a una distribución Linux. Espero que este artículo sea informativo y útil para usted. Por favor publique sus valiosos comentarios y sugerencias al respecto.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar