Aplicaciones OpenBSD Seguridad OpenSSL
OpenSSL + Apache HTTPS
Introducción
Como sabrán OpenBSD trae por defecto en su Apache 1.3.XX, el módulo mod_ssl activado, pero no estara funcionando hasta que creemos los certificados y llaves correspondientes. Un poco de teoria de la mano de Wikipedia:
El sistema criptográfico con clave pública RSA es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye (en forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario.
Una clave es un número de gran tamaño, que una persona puede conceptualizar como un mensaje digital, como un archivo binario o como una cadena de bits o bytes.
Cuando se quiere enviar un mensaje, el emisor busca la clave pública de cifrado del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.
Los mensajes enviados usando el algoritmo RSA se representan mediante números y el funcionamiento se basa en el producto de dos números primos grandes (mayores que 10100) elegidos al azar para conformar la clave de descifrado.
Empecemos de una vez
Para que httpd(8) soporte https tendremos que crear un certificado RSA de la siguiente manera:
Generando certificado RSA
# openssl genrsa -out /etc/ssl/private/server.key 1024
Este comando generará una llave de 1024 bits, ahora bien si lo que quieren es generar una llave encriptada con una contraseña (para levantar el servicio) deberian hacer algo asi (no lo recomiendo para algo 'hogareño' o administrado por nosotros mismos):
Generando certificado RSA con llave y clave
# openssl genrsa -des3 -out /etc/ssl/private/server.key 1024
Ahora tendriamos que generar una petición de certificado firmado para que algún organismo de certificación nos pueda firmar el certificado y aprobarlo (esto se usa en caso que sea algo real):
Petición de firma del certificado por una Organización
# openssl req -new -key /etc/ssl/private/server.key \ -out /etc/ssl/private/server.csr
El archivo server.csr puede entonces darte la certificación del organismo que firme la llave.
O lo podemos firmar nosotros de la siguiente manera:
Petición de firma del certificado por nosotros mismos
# openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \ -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt
Recuerden que si lo firmamos nosotros mismos en -days 365 podriamos poner algunos dias mas, para que no expire tan rápido, pero esto no es necesario, es solo una comodidad.
Pasos finales
Si ya tenemos los archivos /etc/ssl/server.crt y /etc/ssl/private/server.key podriamos iniciar httpd(8) con la opción -DSSL. Recuerden que si ya tenian corriendo httpd(8) deberian matarlo y volver a iniciarlo con esa opción. En caso de que quieran que inicie en 'modo' SSL, deberian setearlo de esta manera en el archivo /etc/rc.conf:
Inicio de httpd con SSL en el archivo /etc/rc.conf
# use -u to disable chroot, see httpd(8) httpd_flags="-DSSL" # for normal use: "" (or "-DSSL" ssl(8))
Conclusiones
Espero que le haya servido y a partir de ahora tienen su servidor Web resguardado con SSL. Cualquier duda, ayuda, agregado, comentario lo pueden hacer por los medios habituales.