15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
10.10.2024

Cómo Instalar un Certificado SSL en un Dominio

Un certificado SSL (Secure Sockets Layer / TLS) es una credencial criptográfica emitida por una Autoridad de Certificación (CA) de confianza que autentica la identidad de su servidor y establece un canal cifrado entre el servidor y el navegador del cliente. Cuando se instala correctamente, actualiza su sitio de http:// a https://, activa el candado del navegador y evita la interceptación de los datos transmitidos por ataques de intermediario.

En cuanto al SEO, Google ha tratado HTTPS como una señal de clasificación confirmada desde 2014. Para los usuarios, un certificado ausente o mal configurado activa advertencias de seguridad en el navegador que destruyen las tasas de conversión. Ya sea que administre una sola página de destino o una infraestructura multidominios, configurar SSL correctamente — y mantenerlo así — no es negociable.

Requisitos previos antes de comenzar

Antes de tocar un solo archivo de configuración, confirme que tiene lo siguiente en su lugar:

  • Un nombre de dominio registrado apuntado a la dirección IP de su servidor con el DNS completamente propagado. Puede registrar o transferir un dominio a través de Registro de Dominios.
  • Un paquete de certificado SSL de una CA. Esto generalmente incluye:
certificate.crt — su certificado firmado principal
private.key — la clave privada generada junto con su CSR
ca_bundle.crt — la cadena de CA intermedia (a veces llamada archivo de cadena)
Acceso al servidor o panel de control — ya sea credenciales de cPanel/Plesk o acceso SSH root/sudo al servidor.
Software de servidor web — Apache o Nginx, en ejecución y configurado para su dominio.
Puerto 443 abierto — verifique que su firewall permita TCP entrante en el puerto 443 antes de instalar cualquier cosa.

Si está ejecutando un entorno de Hosting VPS, tendrá acceso root completo y podrá utilizar cualquiera de los tres métodos a continuación. Los usuarios de hosting compartido generalmente están limitados al método de cPanel.
Elegir el tipo de certificado SSL correcto
No todos los certificados son equivalentes. Seleccionar el tipo incorrecto desperdicia dinero o deja brechas en la cobertura.



Tipo de certificado
Nivel de validación
Tiempo de emisión
Candado del navegador
Ideal para








—
—
—
—
—








DV (Validación de Dominio)
Solo control del dominio
Minutos
Sí
Blogs, entornos de desarrollo, sitios pequeños








OV (Validación de Organización)
Dominio + identidad de la organización
1–3 días
Sí
Sitios web empresariales, plataformas SaaS








EV (Validación Extendida)
Verificación completa de entidad legal
3–7 días
Sí (nombre de la organización en algunos navegadores)
Comercio electrónico, banca, portales de alta confianza








Wildcard (`*.domain.com`)
DV u OV
Minutos–días
Sí
Implementaciones con múltiples subdominios








Multidominio (SAN)
DV, OV o EV
Variable
Sí
Múltiples dominios distintos en un solo certificado








Let’s Encrypt (DV gratuito)
Solo control del dominio
Segundos
Sí
Cualquier dominio de acceso público





Para comercio electrónico en producción o cualquier sitio que maneje datos de tarjetas de pago, se recomiendan firmemente los certificados OV o EV de una CA comercial. Los certificados DV de Let’s Encrypt son completamente confiables y excelentes para la mayoría de los casos de uso, pero no incluyen verificación de identidad organizacional.
Puede adquirir certificados comerciales directamente a través de Certificados SSL si necesita cobertura OV, EV o Wildcard con soporte dedicado.
Método 1: Instalación de un certificado SSL a través de cPanel
La interfaz gráfica de cPanel es el camino más rápido para usuarios en planes de hosting administrado o Hosting Web Compartido. Si prefiere un entorno VPS administrado con cPanel, un VPS con cPanel le ofrece la misma interfaz con control total del servidor.
Paso 1: Iniciar sesión en cPanel
Navegue a la URL de inicio de sesión de cPanel:
https://yourdomain.com:2083
Autentíquese con sus credenciales de hosting.
Paso 2: Navegar al Administrador SSL/TLS
En la sección Seguridad del panel de control de cPanel, haga clic en SSL/TLS. Luego seleccione Administrar sitios SSL bajo el encabezado “Instalar y administrar SSL para su sitio (HTTPS)”.
Paso 3: Seleccionar el dominio de destino
Use el menú desplegable Dominio para seleccionar el dominio que desea proteger. Si el dominio no aparece, confirme que está agregado como dominio adicional o principal en cPanel.
Paso 4: Pegar los componentes del certificado
Abra cada archivo de certificado en un editor de texto plano (no Word) y pegue el contenido en los campos correspondientes:

Certificado (CRT): Contenido de certificate.crt
  • Clave privada (KEY): Contenido de private.key. Si generó el CSR dentro de cPanel, este campo se rellena automáticamente desde el almacén de claves de cPanel.
  • Paquete de Autoridad de Certificación (CABUNDLE): Contenido de ca_bundle.crt. Omitir este campo es una de las causas más comunes de errores de “certificado no confiable” en dispositivos móviles y navegadores más antiguos, porque el navegador no puede construir la cadena hasta una raíz de confianza.
  • Paso 5: Instalar y verificar

    Haga clic en Instalar certificado. cPanel valida el par clave-certificado antes de confirmar. Si hay una discrepancia entre la clave privada y la clave pública del certificado, cPanel rechazará la instalación con un error explícito — no lo ignore.

    Después de la instalación, visite https://yourdomain.com y confirme que aparece el candado. También pruebe https://www.yourdomain.com si el subdominio www está en uso.

    Error común en cPanel: AutoSSL (la integración integrada de Let’s Encrypt en cPanel) puede sobrescribir un certificado instalado manualmente en su próximo ciclo de renovación. Si instaló un certificado comercial, deshabilite AutoSSL para ese dominio en cPanel > Estado SSL/TLS para evitar reemplazos no deseados.

    Método 2: Instalación automatizada con Let’s Encrypt y Certbot

    Certbot es el cliente ACME de referencia para Let’s Encrypt. Gestiona la generación de CSR, la validación del dominio, la obtención del certificado, la configuración del servidor web y la renovación — todo de forma automática. Este es el enfoque correcto para cualquier servidor Linux que administre directamente.

    Paso 1: Conectarse al servidor a través de SSH

    ssh username@your-server-ip

    Paso 2: Instalar Certbot

    Debian / Ubuntu (Apache):

    sudo apt update && sudo apt install -y certbot python3-certbot-apache

    Debian / Ubuntu (Nginx):

    sudo apt update && sudo apt install -y certbot python3-certbot-nginx

    RHEL / AlmaLinux / Rocky Linux (Apache):

    sudo dnf install -y epel-release
    sudo dnf install -y certbot python3-certbot-apache

    RHEL / AlmaLinux / Rocky Linux (Nginx):

    sudo dnf install -y epel-release
    sudo dnf install -y certbot python3-certbot-nginx

    Paso 3: Obtener e instalar el certificado

    Para Apache:

    sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

    Para Nginx:

    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

    Certbot realiza un desafío HTTP-01 de forma predeterminada: coloca un archivo temporal en la raíz de su sitio web y solicita a los servidores de Let’s Encrypt que lo obtengan a través del puerto 80. Esto significa que el puerto 80 debe estar abierto y su DNS debe resolverse correctamente antes de ejecutar el comando.

    Cuando se le solicite, seleccione la opción de redirigir todo el tráfico HTTP a HTTPS. Esto escribe una redirección permanente 301 en la configuración de su servidor, que es el comportamiento correcto para SEO y seguridad.

    Paso 4: Verificar la renovación automática

    Los certificados de Let’s Encrypt caducan después de 90 días. Certbot instala un temporizador systemd (o trabajo cron en sistemas más antiguos) que intenta la renovación dos veces al día cuando el certificado está dentro de los 30 días de vencimiento. Pruebe la lógica de renovación sin renovar realmente:

    sudo certbot renew --dry-run

    Una ejecución en seco exitosa confirma que el proceso de renovación está intacto. Verifique el estado del temporizador con:

    systemctl status certbot.timer

    Caso especial — desafío DNS-01 para certificados wildcard: El desafío HTTP-01 no puede validar dominios wildcard (*.yourdomain.com). Para wildcards, use el desafío DNS-01, que requiere que cree un registro TXT _acme-challenge en su zona DNS:

    sudo certbot certonly --manual --preferred-challenges dns -d "*.yourdomain.com" -d yourdomain.com

    Siga las instrucciones para agregar el registro TXT, espere a que se propague el DNS y luego presione Enter para completar la validación.

    Método 3: Instalación manual de SSL a través de SSH (Apache y Nginx)

    La instalación manual le brinda control preciso sobre la ubicación del certificado, los conjuntos de cifrado y la configuración del host virtual. Este es el enfoque preferido para servidores de producción donde necesita aplicar políticas TLS específicas.

    Paso 1: Subir los archivos del certificado al servidor

    Use scp para transferir archivos desde su máquina local:

    scp certificate.crt private.key ca_bundle.crt username@your-server-ip:/tmp/

    Luego muévalos a un directorio seguro, no accesible desde la web:

    sudo mkdir -p /etc/ssl/yourdomain
    sudo mv /tmp/certificate.crt /etc/ssl/yourdomain/
    sudo mv /tmp/private.key /etc/ssl/yourdomain/
    sudo mv /tmp/ca_bundle.crt /etc/ssl/yourdomain/
    sudo chmod 600 /etc/ssl/yourdomain/private.key
    sudo chmod 644 /etc/ssl/yourdomain/certificate.crt /etc/ssl/yourdomain/ca_bundle.crt

    Nota de seguridad crítica: La clave privada nunca debe ser legible por todos. El permiso chmod 600 la restringe únicamente al usuario root. En sistemas donde Apache o Nginx se ejecuta como usuario no root (p. ej., www-data), el servicio aún lee la clave al inicio mientras se ejecuta como root antes de reducir privilegios — por lo tanto, 600 propiedad de root es correcto.

    Paso 2a: Configurar Apache

    Edite la configuración del host virtual para su dominio:

    sudo nano /etc/apache2/sites-available/yourdomain.com.conf

    Agregue o modifique el bloque del host virtual 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
    
        SSLEngine on
        SSLCertificateFile      /etc/ssl/yourdomain/certificate.crt
        SSLCertificateKeyFile   /etc/ssl/yourdomain/private.key
        SSLCertificateChainFile /etc/ssl/yourdomain/ca_bundle.crt
    
        # Modern TLS hardening
        SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
        SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
        SSLHonorCipherOrder     off
        SSLSessionTickets       off
    
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    
        DocumentRoot /var/www/yourdomain
    </VirtualHost>

    Habilite el módulo SSL y el sitio, luego reinicie Apache:

    sudo a2enmod ssl headers
    sudo a2ensite yourdomain.com.conf
    sudo apache2ctl configtest
    sudo systemctl restart apache2

    Siempre ejecute apache2ctl configtest antes de reiniciar. Un error de sintaxis en el archivo de configuración dejará inactivo todo el servidor web.

    Paso 2b: Configurar Nginx

    Edite el bloque de servidor de su dominio:

    sudo nano /etc/nginx/sites-available/yourdomain.com

    Agregue la siguiente configuración:

    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        return 301 https://yourdomain.com$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        server_name yourdomain.com www.yourdomain.com;
    
        ssl_certificate      /etc/ssl/yourdomain/certificate.crt;
        ssl_certificate_key  /etc/ssl/yourdomain/private.key;
        ssl_trusted_certificate /etc/ssl/yourdomain/ca_bundle.crt;
    
        # Modern TLS hardening
        ssl_protocols        TLSv1.2 TLSv1.3;
        ssl_ciphers          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  1d;
        ssl_session_tickets  off;
    
        # OCSP Stapling
        ssl_stapling         on;
        ssl_stapling_verify  on;
        resolver             8.8.8.8 8.8.4.4 valid=300s;
    
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    
        root /var/www/yourdomain;
        index index.html index.php;
    }

    Habilite el sitio y pruebe:

    sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx

    Explicación de OCSP Stapling: Sin stapling, el navegador debe contactar al respondedor OCSP de la CA durante cada handshake TLS para verificar si el certificado ha sido revocado. Esto agrega latencia y filtra datos de navegación a la CA. Con ssl_stapling on, Nginx almacena en caché la respuesta OCSP y la sirve directamente al cliente, eliminando el viaje de ida y vuelta.

    Fortalecimiento de TLS: lo que la configuración original omite

    Un certificado instalado con la configuración predeterminada es seguro, pero no está reforzado. La siguiente tabla resume las directivas adicionales que separan una calificación aprobatoria de SSL Labs de una A+:

    Directiva de fortalecimientoDirectiva ApacheDirectiva NginxPropósito
    Deshabilitar TLS 1.0 / 1.1`SSLProtocol all -TLSv1 -TLSv1.1``ssl_protocols TLSv1.2 TLSv1.3`Eliminar vulnerabilidades de protocolos obsoletos
    Encabezado HSTS`Header always set Strict-Transport-Security``add_header Strict-Transport-Security`Forzar HTTPS a nivel del navegador, prevenir SSL stripping
    OCSP Stapling`SSLUseStapling on``ssl_stapling on`Reducir la latencia del handshake, mejorar la privacidad
    Deshabilitar tickets de sesión`SSLSessionTickets off``ssl_session_tickets off`Prevenir la degradación del secreto hacia adelante
    Conjunto de cifrado fuerte`SSLCipherSuite ECDHE-…``ssl_ciphers ECDHE-…`Aplicar cifrados AEAD, eliminar RC4/3DES
    HTTP/2`Protocols h2 http/1.1``listen 443 ssl http2`Mejora de rendimiento sobre TLS

    Verificación y prueba de la instalación SSL

    La instalación no está completa hasta que haya verificado el resultado desde una perspectiva externa.

    Verificación en el navegador

    Visite https://yourdomain.com. El icono de candado confirma un certificado válido y de confianza. Haga clic en el candado e inspeccione los detalles del certificado: verifique que el Nombre Común o el Nombre Alternativo del Sujeto coincida con su dominio y compruebe la fecha de vencimiento.

    Prueba del servidor SSL Labs

    Navegue a SSL Labs e ingrese su dominio. El informe califica su configuración TLS de F a A+ y señala problemas específicos: conjuntos de cifrado débiles, certificados de cadena faltantes, ausencia de HSTS y soporte de protocolos. Una calificación A+ requiere HSTS con un max-age largo y sin soporte para TLS 1.0 o 1.1.

    Verificación por línea de comandos con OpenSSL

    openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

    Esto muestra la cadena de certificados completa, el conjunto de cifrado negociado y la versión TLS. Busque Verify return code: 0 (ok) al final de la salida. Cualquier código de retorno distinto de cero indica un problema de cadena o confianza.

    Para verificar la fecha de vencimiento del certificado directamente:

    echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates

    Verificación de contenido mixto

    Después de habilitar HTTPS, el contenido mixto es el problema residual más común. Ocurre cuando una página HTTPS carga recursos (imágenes, scripts, hojas de estilo, iframes) a través de HTTP. El contenido mixto bloquea los recursos activos (scripts, iframes) por completo en los navegadores modernos y genera advertencias en la consola para los recursos pasivos (imágenes).

    Corrija el contenido mixto mediante:

    1. Actualizar todas las URL http:// codificadas en su CMS o HTML a https:// o relativas al protocolo //.
    2. Agregar un encabezado de Política de Seguridad de Contenido con upgrade-insecure-requests como medida temporal:
    add_header Content-Security-Policy "upgrade-insecure-requests" always;
    1. Usar las DevTools del navegador (F12 > Consola) para identificar los recursos específicos que causan el problema.

    Renovación de certificados y gestión del ciclo de vida

    Fuente del certificadoValidez predeterminadaMétodo de renovaciónAutomatización
    Let’s Encrypt (Certbot)90 días`certbot renew` mediante temporizador systemdCompletamente automático
    CA comercial (cPanel)1–2 añosReemisión e instalación manualManual o con scripts
    CA comercial (SSH)1–2 añosReemplazar archivos, recargar servidor webAutomatizable con cron
    CA interna / autofirmadoPersonalizadoManualManual

    Para certificados comerciales administrados manualmente, configure un recordatorio en el calendario 30 días antes del vencimiento. Un certificado vencido es peor que ningún certificado — los navegadores muestran un error de bloqueo de página completa que los usuarios no pueden eludir fácilmente.

    Si está ejecutando múltiples dominios o una aplicación de alto tráfico en un Servidor Dedicado, considere implementar una solución centralizada de gestión de certificados como cert-manager (Kubernetes), Vault PKI, o un certificado wildcard para reducir la carga de renovación en los subdominios.

    Matriz de decisión: qué método de instalación usar

    EscenarioMétodo recomendado
    Hosting compartido, sin acceso SSHAdministrador SSL/TLS de cPanel
    VPS o servidor dedicado, se necesita certificado gratuitoCertbot (Let’s Encrypt)
    VPS o servidor dedicado, certificado comercial OV/EVInstalación manual por SSH
    Certificado wildcard (`*.domain.com`)SSH manual + desafío DNS-01 mediante Certbot
    Certificado SAN multidominioInstalación manual por SSH
    Sin experiencia técnica, hosting administradoAutoSSL de cPanel o SSL con un clic del proveedor de hosting

    Lista de verificación de puntos clave técnicos

    • Confirme que el puerto 443 está abierto en su firewall antes de instalar cualquier certificado.
    • Verifique siempre que la clave privada coincida con el certificado antes de la instalación: openssl x509 -noout -modulus -in certificate.crt | md5sum y openssl rsa -noout -modulus -in private.key | md5sum deben producir hashes idénticos.
    • Incluya la cadena intermedia completa (ca_bundle.crt) — omitirla causa fallos de confianza en navegadores móviles incluso cuando Chrome de escritorio muestra un candado.
    • Establezca chmod 600 en el archivo de clave privada; nunca lo exponga en un directorio accesible desde la web.
    • Deshabilite TLS 1.0 y TLS 1.1 en la configuración de su servidor web — estos protocolos están obsoletos y son explotables.
    • Habilite HSTS con includeSubDomains solo después de confirmar que todos los subdominios también sirven HTTPS.
    • Ejecute certbot renew --dry-run después de la configuración inicial de Certbot para confirmar que el proceso de renovación funciona.
    • Pruebe con SSL Labs después de cada instalación o cambio de configuración.
    • Audite el contenido mixto inmediatamente después de cambiar a HTTPS — rompe silenciosamente la funcionalidad.
    • Para certificados wildcard de Let’s Encrypt, use el desafío DNS-01, no HTTP-01.

    Preguntas frecuentes

    ¿Cuál es la diferencia entre un certificado SSL y un certificado TLS?

    SSL (Secure Sockets Layer) es el protocolo heredado que fue obsoleto en 1999. Su sucesor, TLS (Transport Layer Security), es lo que todas las conexiones HTTPS modernas utilizan realmente. El término “certificado SSL” persiste como abreviatura en la industria, pero cada certificado emitido hoy opera sobre TLS 1.2 o TLS 1.3.

    ¿Por qué mi certificado SSL aparece como confiable en Chrome pero no en dispositivos Android?

    Esto casi siempre se debe a un certificado de cadena intermedia faltante. Chrome de escritorio tiene un mecanismo agresivo de obtención de certificados (AIA fetching) que puede reconstruir la cadena incluso cuando está ausente del servidor. El almacén del sistema de Android no lo hace. Incluya siempre el archivo de cadena ca_bundle.crt en la configuración de su servidor.

    ¿Puedo instalar un certificado SSL en un dominio que aún no tiene un sitio web?

    Sí, pero solo si el registro DNS A del dominio resuelve a la dirección IP del servidor. La CA debe poder llegar al servidor para completar la validación del dominio. Si el DNS aún no se ha propagado, el desafío fallará.

    ¿Cómo renuevo un certificado SSL comercial sin tiempo de inactividad?

    Genere un nuevo CSR en el servidor, envíelo a su CA, reciba el nuevo paquete de certificados, reemplace los archivos del certificado en el servidor y recargue el servidor web (systemctl reload apache2 o systemctl reload nginx). Una recarga aplica el nuevo certificado sin interrumpir las conexiones existentes, a diferencia de un reinicio completo.

    ¿La instalación de un certificado SSL redirige automáticamente HTTP a HTTPS?

    No. Instalar un certificado solo habilita HTTPS. La redirección de HTTP a HTTPS debe configurarse por separado en su host virtual o bloque de servidor. Los complementos --apache y --nginx de Certbot ofrecen configurar esta redirección automáticamente durante la instalación. Para instalaciones manuales, agregue una directiva explícita Redirect permanent (Apache) o return 301 (Nginx) en el bloque de servidor del puerto 80.

    15%

    Ahorra 15%<\/span> en todos los servicios de hosting

    Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

    Usa el código:

    Skills
    Comenzar