Logo ID Digital

Cómo instalar certificados SSL en Apache

instalar-certificados-ssl-apache

Introducción

Este manual explica cómo instalar un certificado SSL en un servidor Apache utilizando OpenSSL. Incluye la generación del CSR, la instalación del certificado emitido y la configuración del VirtualHost para habilitar HTTPS.


Requisitos

Antes de comenzar, verificá que:

  • Tenés un servidor Apache HTTPD instalado y funcionando.
  • Podés acceder por consola al servidor (SSH, terminal, etc.).
  • Contás con permisos para editar los archivos de configuración de Apache.
  • Tenés OpenSSL instalado en el servidor.

En los ejemplos se utiliza la carpeta /etc/ssl para guardar los archivos del certificado, pero podés adaptarla a la estructura de tu sistema.


1. Crear CSR con OpenSSL

Para solicitar el certificado SSL debés generar en tu servidor la clave privada y el CSR (Certificate Signing Request).

1.1 Generar la clave privada y el CSR

En la consola del servidor, ejecutá:

openssl req -out CSR.csr -new -newkey rsa:2048 -keyout claveprivada.key
  • CSR.csr: archivo que vas a enviar a la Autoridad Certificadora.
  • claveprivada.key: archivo con la clave privada (no debe compartirse).
  • rsa:2048: genera una clave de 2048 bits (no se admiten claves de 1024).

1.2 Completar los datos de la organización

Al ejecutar el comando anterior, OpenSSL te pedirá los siguientes datos:

  • Country Code: código de país de 2 letras (para Uruguay: UY).
  • State/Province: departamento o provincia (ejemplo: Montevideo).
  • City/Locality: ciudad o localidad.
  • Organization (O): razón social de la empresa registrada en DGI.
  • Organizational Unit (OU): sector que solicita el certificado (por ejemplo, Departamento de Informática).
  • Common Name (CN): dominio en formato FQDN (por ejemplo, midominio.com).

Si el certificado es Wildcard, el Common Name debe tener un asterisco:

  • Ejemplo: *.midominio.com.

1.3 Archivos generados

Al finalizar el asistente tendrás:

  • claveprivada.keyClave privada de tu sitio. Guardala en un lugar seguro.
  • CSR.csrSolicitud de certificado que deberás enviar a ID Digital o a la entidad emisora.

2. Instalar el certificado

Una vez emitido el certificado, vas a recibir un correo electrónico con el enlace de descarga.

2.1 Descargar el certificado y el bundle

  1. Desde el enlace del correo, descargá el certificado del sitio en formato binario (.cer).

  2. Renombrá el archivo descargado a:

    certificado.cer

  3. Cambiá la extensión de .cer a .crt (el contenido sigue siendo Base-64):

    certificado.crt

  4. Descargá el bundle de certificados intermedios según el tipo de certificado contratado:

    • Certificados DV → bundle DV.
    • Certificados OV → bundle OV.
    • Certificados EV → bundle EV.

    Renombrá el bundle, por ejemplo:

    intermediosOV-Certum.pem

2.2 Ubicar los archivos en el servidor

Copiá los archivos al servidor y guardalos en una carpeta, por ejemplo:

  • Carpeta general: /etc/ssl
  • Clave privada: /etc/ssl/ssl.key/claveprivada.key
  • Certificado del sitio: /etc/ssl/ssl.crt/certificado.crt
  • Bundle de intermedios: /etc/ssl/ssl.crt/intermediosOV-Certum.pem

Podés usar otras rutas, siempre que luego las referencies correctamente en la configuración de Apache.


3. Configurar Apache para usar SSL

3.1 Localizar el archivo de configuración

El archivo de configuración del servidor puede estar en distintas rutas según la distribución:

  • Fedora/CentOS/RHEL: /etc/httpd/conf/httpd.conf
  • Debian y derivados: /etc/apache2/apache2.conf

La configuración SSL suele estar en alguno de estos archivos:

  • httpd-ssl.conf
  • ssl.conf
  • Archivos dentro de /etc/apache2/sites-enabled/

Abrí el archivo correspondiente con tu editor de texto y ubicá el bloque <VirtualHost> del sitio que va a usar HTTPS (puede ser *:443).

3.2 Configurar el VirtualHost HTTPS

Dentro del <VirtualHost *:443>, agregá (o ajustá) las siguientes directivas:

SSLEngine on
SSLCertificateKeyFile /etc/ssl/ssl.key/claveprivada.key
SSLCertificateFile    /etc/ssl/ssl.crt/certificado.crt
SSLCertificateChainFile /etc/ssl/ssl.crt/intermediosOV-Certum.pem

Asegurate de que las rutas coincidan con la ubicación real de tus archivos.

Un ejemplo mínimo de VirtualHost podría verse así:

<VirtualHost *:443>
    ServerName midominio.com

    SSLEngine on
    SSLCertificateKeyFile /etc/ssl/ssl.key/claveprivada.key
    SSLCertificateFile    /etc/ssl/ssl.crt/certificado.crt
    SSLCertificateChainFile /etc/ssl/ssl.crt/intermediosOV-Certum.pem

    # Resto de la configuración del sitio...
    DocumentRoot /var/www/html
</VirtualHost>

3.3 Configuraciones SSL recomendadas

En el mismo archivo de configuración podés incluir parámetros adicionales:

SSLProtocol All -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
  • SSLProtocol define los protocolos habilitados (se deshabilita SSLv2 por seguridad).
  • SSLHonorCipherOrder On hace que el servidor elija el orden de cifrados.
  • SSLCipherSuite prioriza cifrados fuertes y deshabilita los débiles u obsoletos.

4. Reiniciar y verificar el sitio

4.1 Reiniciar Apache

Para aplicar los cambios, reiniciá el servicio Apache (el comando puede variar según la distribución):

En Debian/Ubuntu:

/etc/init.d/apache2 restart

En RedHat/Fedora/CentOS:

apachectl restart

O, según el sistema:

/usr/sbin/httpd restart
/etc/init.d/apache restart

4.2 Verificar el acceso por HTTPS

  1. Abrí un navegador y accedé a tu sitio utilizando https, por ejemplo:

    • https://midominio.com/
  2. Verificá que:

    • El navegador muestre el candado de conexión segura.
    • El certificado se vea como válido y emitido para tu dominio.
    • No aparezcan mensajes de advertencia sobre certificado no confiable.

Si todo es correcto, tu servidor Apache ya está funcionando con SSL habilitado.


Recursos