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
o – Código del país (2 letras)
o – Estado o provincia
o – Ciudad
o – Empresa o nombre de la organización
o – Departamento
o – Dominio o IP
o – 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 2048
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
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc.pki/tls/private/ca.key
Reiniciar el Apache
# service httpd graceful