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.key– Clave privada de tu sitio. Guardala en un lugar seguro.CSR.csr– Solicitud 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
-
Desde el enlace del correo, descargá el certificado del sitio en formato binario (.cer).
-
Renombrá el archivo descargado a:
certificado.cer -
Cambiá la extensión de
.cera.crt(el contenido sigue siendo Base-64):certificado.crt -
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.confssl.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
SSLProtocoldefine los protocolos habilitados (se deshabilita SSLv2 por seguridad).SSLHonorCipherOrder Onhace que el servidor elija el orden de cifrados.SSLCipherSuiteprioriza 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
-
Abrí un navegador y accedé a tu sitio utilizando
https, por ejemplo:https://midominio.com/
-
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
- ? Descargar manual en PDF
Hacé clic aquí para descargar el PDF