En esta guía, aprenderás cómo instalar un certificado SSL en CentOS y sus sucesores de la familia RHEL (AlmaLinux, Rocky Linux y CentOS Stream) utilizando el servidor web Apache httpd.
También grabamos un video que te guía a través de todo el proceso. Si prefieres la versión en texto, sigue leyendo a continuación.
Genera un código CSR
Al solicitar un certificado SSL, primero generas un CSR (Certificate Signing Request) y lo envías a la Autoridad de Certificación. El CSR es un bloque de texto que contiene tus datos de contacto y de dominio, y se combina con una clave privada creada al mismo tiempo. Tienes dos opciones:
- Usa nuestro Generador de CSR para crear el CSR automáticamente.
- Sigue nuestro tutorial paso a paso sobre cómo crear un CSR en CentOS.
Envía el CSR a la Autoridad de Certificación durante el proceso de compra. Una vez que la CA lo valide y emita tu certificado, continúa con la instalación a continuación.
Instalar un certificado SSL en CentOS / RHEL (Apache)
Aviso sobre versiones: CentOS Linux 8 llegó al final de su vida útil el 31 de diciembre de 2021, y CentOS Linux 7 llegó al EOL el 30 de junio de 2024. Para producción, utiliza en su lugar una distribución compatible de la familia RHEL: RHEL 8/9/10, AlmaLinux, Rocky Linux, o CentOS Stream. Todas comparten la misma estructura de Apache httpd, por lo que los pasos a continuación se aplican a todas ellas.
Antes de empezar
Después de la validación, tu Autoridad de Certificación te envía por correo electrónico los archivos del certificado. Asegúrate de tener estos tres archivos separados listos:
- tudominio.crt, tu certificado SSL principal.
- tudominio.ca-bundle, los certificados intermedios (el paquete de CA).
- tudominio.key, la clave privada que generaste con el CSR.
Importante: nunca incluyas la clave privada dentro de la cadena de certificados. La clave debe permanecer en su propio archivo, legible únicamente por root.
Paso 1: Instala el soporte TLS (mod_ssl)
Instala mod_ssl, que añade soporte TLS a Apache y coloca una configuración TLS predeterminada en /etc/httpd/conf.d/ssl.conf:
sudo dnf install -y mod_ssl
En sistemas más antiguos que aún usan el gestor de paquetes yum, ejecuta en su lugar sudo yum install -y mod_ssl.
Paso 2: Coloca tus archivos SSL
Copia la clave privada en /etc/pki/tls/private/ y restringe sus permisos para que solo root pueda leerla:
sudo cp yourdomain.key /etc/pki/tls/private/
sudo chown root:root /etc/pki/tls/private/yourdomain.key
sudo chmod 600 /etc/pki/tls/private/yourdomain.key
A continuación, crea el archivo de cadena completa concatenando tu certificado y el paquete de CA, y colócalo en /etc/pki/tls/certs/:
cat yourdomain.crt yourdomain.ca-bundle
| sudo tee /etc/pki/tls/certs/yourdomain-fullchain.crt > /dev/null
El archivo de cadena completa debe contener únicamente el certificado público y la cadena intermedia, nunca la clave privada.
Paso 3: Configura el host virtual TLS de Apache
Puedes editar el archivo predeterminado /etc/httpd/conf.d/ssl.conf que creó mod_ssl, o (más limpio) crear un archivo dedicado para tu sitio, por ejemplo /etc/httpd/conf.d/tudominio.conf. Ábrelo con un editor de texto:
sudo nano /etc/httpd/conf.d/yourdomain.conf
Añade un host virtual en el puerto 80 que redirija todo el tráfico a HTTPS, seguido del host virtual del puerto seguro 443 que contiene tus directivas SSL:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/yourdomain.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/yourdomain-fullchain.crt
SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
</VirtualHost>
- SSLCertificateFile, tu archivo de cadena completa (certificado + intermedios). En Apache 2.4.8 y versiones más recientes, esta única directiva reemplaza la obsoleta SSLCertificateChainFile.
- SSLCertificateKeyFile, la clave privada que creaste con el CSR.
Nota sobre el host predeterminado: el archivo /etc/httpd/conf.d/ssl.conf de mod_ssl incluye su propio <VirtualHost _default_:443> con un certificado autofirmado. Cuando añades un host *:443 por sitio como se muestra arriba, las solicitudes que coincidan con tu ServerName usarán tu certificado, pero las solicitudes HTTPS que no coincidan (por ejemplo, acceder al servidor por su dirección IP) seguirán recurriendo a ese host predeterminado autofirmado. Si no deseas esa alternativa, comenta el bloque <VirtualHost _default_:443> en ssl.conf o apúntalo a tu propio certificado.
Nota sobre el endurecimiento TLS: Apache en RHEL 8 y versiones más recientes sigue la política criptográfica del sistema, que ya deshabilita los protocolos obsoletos. Para establecer la política en todo el servidor, ejecuta sudo update-crypto-policies --set DEFAULT (o FUTURE para configuraciones más estrictas). Si prefieres fijar los protocolos por host virtual, añade SSLProtocol -all +TLSv1.2 +TLSv1.3 dentro del bloque del puerto 443.
Paso 4: Prueba tu configuración de Apache
Comprueba siempre la sintaxis antes de recargar, porque un solo error tipográfico puede dejar el sitio fuera de línea:
sudo apachectl configtest
Deberías ver Syntax OK. (El comando sudo httpd -t hace lo mismo). Corrige cualquier error reportado antes de continuar.
Paso 5: Reinicia Apache
Aplica los cambios recargando el servicio httpd (una recarga activa la nueva configuración sin cortar las conexiones activas):
sudo systemctl reload httpd
Si httpd aún no estaba en ejecución, inícialo con sudo systemctl enable --now httpd. Tu sitio web debería ahora estar activo a través de HTTPS. Para verificar el resultado y obtener un informe de estado instantáneo, utiliza nuestro SSL Checker.
Notas para versiones antiguas de CentOS (7 y anteriores)
CentOS Linux 7, 6 y 8 han superado su fin de vida útil y ya no reciben actualizaciones de seguridad, así que migra a una distribución compatible de la familia RHEL cuando puedas. Si debes trabajar en un servidor heredado, el proceso es el mismo que el anterior, con dos diferencias:
- Gestor de paquetes: CentOS 7 y 6 usan yum en lugar de dnf. Comprueba si mod_ssl ya está instalado con
rpm -qa | grep mod_ssl, y si no lo está, instálalo consudo yum install -y mod_ssl. - Apache anterior a 2.4.8: solo las compilaciones muy antiguas son anteriores a 2.4.8. En ese caso, mantén el certificado y la cadena en archivos separados y añade una tercera directiva, SSLCertificateChainFile, que apunte al paquete de CA (no a tu certificado):
SSLCertificateFile /etc/pki/tls/certs/yourdomain.crt
SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
SSLCertificateChainFile /etc/pki/tls/certs/yourdomain.ca-bundle
En Apache 2.4.8 y versiones más recientes (que cubre todas las versiones actualmente compatibles), utiliza en su lugar el SSLCertificateFile de cadena completa más simple mostrado en el Paso 3.
¿Dónde comprar un certificado SSL para CentOS?
El mejor lugar para comprar un certificado SSL para tu servidor CentOS es un revendedor SSL de confianza como SSL Dragon. Nuestros precios están entre los más bajos del mercado, y ofrecemos descuentos regulares y excelentes ofertas en toda nuestra gama de productos SSL, respaldados por un soporte al cliente excepcional. Todos nuestros certificados son compatibles con CentOS y sus sucesores de la familia RHEL.
SSL Dragon se encarga de la seguridad de tus datos sensibles, para que tu sitio web o negocio pueda prosperar en línea.
Preguntas frecuentes
Conéctate a tu sitio con OpenSSL y lee el certificado que sirve:echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Si hay un certificado instalado, esto imprime su emisor y sus fechas de validez. Para inspeccionar en su lugar un archivo de certificado en disco, ejecuta openssl x509 -text -noout -in certificate.crt. También puedes listar los hosts virtuales activos de Apache con sudo apachectl -S, o abrir tu sitio en un navegador y comprobar el candado.
Por convención, los certificados se colocan en /etc/pki/tls/certs/ y las claves privadas en /etc/pki/tls/private/. Estas son las ubicaciones predeterminadas de la familia RHEL; puedes usar otras ubicaciones siempre que tu host virtual apunte a ellas.
El módulo TLS instala su configuración predeterminada en /etc/httpd/conf.d/ssl.conf, y la configuración principal de Apache es /etc/httpd/conf/httpd.conf. Puedes añadir tus hosts virtuales a ssl.conf, pero es más limpio crear un archivo por sitio como /etc/httpd/conf.d/tudominio.conf. Cualquier archivo .conf en /etc/httpd/conf.d/ se carga automáticamente. Los registros de Apache se encuentran en /var/log/httpd/.
En Apache 2.4.8 y versiones posteriores (todas las versiones actualmente compatibles de la familia RHEL), sí: concatena tu certificado y el paquete de CA en un solo archivo de cadena completa y haz que SSLCertificateFile apunte a él. La directiva separada SSLCertificateChainFile está obsoleta y solo es necesaria en compilaciones de Apache anteriores a 2.4.8.
OpenSSL viene preinstalado en CentOS y en todas las demás distribuciones principales de Linux, por lo que normalmente no necesitas instalarlo. Si falta, añádelo con sudo dnf install -y openssl (o sudo yum install -y openssl en CentOS 7 y versiones anteriores). Aprende más sobre OpenSSL y sus líneas de comandos.
Conclusión
Instalar un certificado SSL en CentOS o RHEL con Apache se resume en instalar mod_ssl, colocar tu clave privada y el certificado de cadena completa bajo /etc/pki/tls/, configurar el bloque <VirtualHost *:443> en /etc/httpd/conf.d/, probar con sudo apachectl configtest, y recargar con sudo systemctl reload httpd. ¿Necesitas primero un certificado? Explora nuestros certificados SSL.
Ahorre un 10% en certificados SSL al realizar su pedido hoy mismo.
Emisión rápida, cifrado potente, 99,99% de confianza del navegador, asistencia dedicada y garantía de devolución del dinero en 25 días. Código del cupón: SAVE10

