Conceptos
SSL / TLS (Secure Socket Layer / Transport Layer Security): son protocolos criptográficos que permiten establecer un canal de comunicación segura en Internet: web, correo, fax y mensajería instantánea
CA (Certificate Authoritative): entidad reconocida a nivel mundial encargada de generar certificados de seguridad para terceros.
CSR (Certificate Signing Request ): es una solicitud de firmado de certificado a una CA.
Procedimiento para obtener certificados de seguridad
- 1. Crear claves públicas y privadas
-
2. Crear CSR. El CSR debe tener la siguiente información
- – Código del país (2 letras)
- – Estado o provincia
- – Ciudad
- – Empresa o nombre de la organización
- – Departamento
- – Dominio o IP
- – Correo electrónico
- 3. Contactar con una CA
- 4. Enviar el CSR a CA
- 5. CA devuelve el certificado firmado
- 6. Configurar el certificado sobre el servicio deseado
Los paso 3 y 4 pueden omitirse y obtenerse un certificado autofirmado, sin costo alguno, pero obtener un certificado firmado por una CA tiene las siguientes ventajas:
- – Fuerte nivel de encriptación
- – La autencidad del certificado es respaldada por una entidad reconocida a nivel mundial
- – La raíz de los certificados son incluídos en la mayoría de los navegadores
- – El proceso de conexión segura es transparente al usuario
Algunas CA
VeriSign: Es una de las CA lideres a nivel mundial, genera certificados con / hasta 256 bit de encriptación.
Thawte: Otras de las CA lideres en el mundo, tambien ofrece diferentes tipos de certificados con un nivel de encriptación de hasta 256 bit
Generar certificado autofirmado
Generar llave privada
# openssl genrsa -out ca.key 1024
Generar petición de certificado
# openssl req -new -key ca.key -out ca.csr
A continuación debemos especificar los datos que nos solicita openssl, se debe prestar especial atención al dato Common Name pues debe coincidir con el dominio o IP a través del cual haremos peticiones seguras si no coincide el certificado no funcionará
Generar certificado
# openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
Mover ficheros a los directorios correspondientes
# mv -v ca.crt /etc/pki/tls/certs # mv -v ca.key /etc/pki/tls/private/ # mv -v ca.csr /etc/pki/tls/private/
Actualizar configuración del Apache
Editar httpd.conf
# vim +/NameVirtualHost /etc/httpd/conf/httpd.conf
Añadir al httpd.conf
NameVirtualHost *:443
Editar ssl.conf
# vim /etc/httpd/conf/ssl.conf
Actualizar las siguientes directivas
<VirtualHost *:443> SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc.pki/tls/private/ca.key
Reiniciar el Apache
# service httpd graceful