El conjunto de herramientas OpenSSL es una característica de FreeBSD que muchos usuarios pasan por alto. OpenSSL ofrece una capa de cifrada de transporte sobre la capa normal de comunicación, permitiendo la combinación con con muchas aplicaciones y servicios de red.
Algunos usos de OpenSSL son
la validación cifrada de clientes de correo, las
transacciones basadas en web como pagos con tarjetas de
crédito, etc. Muchos ports, como
www/apache13-ssl
y
mail/sylpheed-claws
ofrecen soporte de compilación para
OpenSSL.
En la mayoría de los casos la colección
de ports tratará de compilar el port
security/openssl
a menos
que la variable de make WITH_OPENSSL_BASE
sea puesta explícitamente a “yes”.
La versión de OpenSSL incluida en FreeBSD soporta los protocolos de seguridad de red Secure Sockets Layer v2/v3 (SSLv2/SSLv3) y Transport Layer Security v1 (TLSv1) y puede utilizarse como biblioteca criptográfica general.
OpenSSL soporta el
algoritmo IDEA pero estáa deshabilitado
por defecto debido a patentes en vigor en los Estados Unidos.
Si quiere usarlo debe revisar la licencia, y si las
restricciones le parecen aceptables active la variable
MAKE_IDEA
en
make.conf
.
Uno de los usos más comunes de OpenSSL es ofrecer certificados para usar con aplicaciones de software. Estos certificados aseguran que las credenciales de la compañia o individuo son válidos y no son fraudulentos. Si el certificado en cuestión no ha sido verificado por uno de las diversas “autoridades certificadoras” o CA, suele generarse una advertencia al respecto. Una autoridad de certificados es una compañia, como VeriSign, que firma certificados para validar credenciales de individuos o compañias. Este proceso tiene un costo asociado y no es un requisito imprescindible para usar certificados, aunque puede darle un poco de tranquilidad a los usuarios más paranóicos.
Para generar un certificado ejecute lo siguiente:
#
openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mi compañía
Organizational Unit Name (eg, section) []:Administrador de sistemas
Common Name (eg, YOUR name) []:localhost.ejemplo.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:UNA CONTRASEÑA
An optional company name []:Otro nombre
Tenga en cuenta que la respuesta directamente después de “prompt” “Common Name” muestra un nombre de dominio. Este “prompt” requiere que se introduzca un nombre de servidor para usarlo en la verificación; si escribe cualquier otra cosa producirá un certificado inválido. Otras opciones, por ejemplo el tiempo de expiración, alternan algoritmos de cifrado, etc. Puede ver una lista completa en la página de manual de openssl(1).
Debería tener dos ficheros en el directorio
donde ha ejecutado la orden anterior. La petición
de certificado,
req.pem
, es lo que debe enviar a una
autoridad certificadora para que valide las credenciales que
introdujo; firmará la petición y le devolverá
el certificado. El segundo fichero es
cert.pem
y es la llave privada para
el certificado, que debe proteger a toda costa; si cae en
malas manos podrí usarse para suplantarle a usted o a
sus servidores.
Si no necesita la firma de una CA puede crear y firmar usted mismo su certificado. Primero, genere la llave RSA:
#
openssl dsaparam -rand -genkey -out myRSA.key
1024
A continuación genere la llave CA:
#
openssl gendsa -des3 -out myca.key
myRSA.key
Utilice esta llave para crear el certificado:
#
openssl req -new -x509 -days 365 -key myca.key
-out new.crt
Deberín aparecer dos nuevos ficheros en su directorio:
un fichero de firma de autoridad de certificados
(myca.key
) y el certificado en sí,
new.crt
. Deben ubicarse en un directorio,
que se recomienda que sea
/etc
, que es legible
solo para root
. Para terminar, es recomendable
asignar permisos 0700 para el fichero con
chmod
.
?Qué pueden hacer estos ficheros? Cifrar conexiones al MTA Sendmail es un buen sitio para usarlos. De este modo eliminará el uso de validación mediante texto en claro para los usuarios que envían correo a través del MTA local.
No es el mejor uso en el mundo, ya que algunos MUAs enviarán al usuario un mensaje de error si no tiene instalados localmente los certificados. Consulte la documentación para más datos sobre la instalación de certificados.
Debe añadir las siguientes líneas
en su fichero local .mc
:
/etc/certs/
es el directorio destinado a almacenamiento de
los ficheros de certificado y llave en local.
El último requisito es una reconstrucción
del fichero .cf
local. Solo tiene que
teclear make
install
en el directorio
/etc/mail
.
A continuación ejecute un make
restart
, que debería reiniciar el
dæmon Sendmail.
Si todo fué bien no habrá mensajes de error
en el fichero /var/log/maillog
y Sendmail aparecerá en
la lista de procesos.
Puede probarlo todo de una forma muy sencilla; conéctese al servidor de correo mediante telnet(1):
#
telnet ejemplo.com
25
Trying 192.0.34.166...
Connected to ejemplo.com
.
Escape character is '^]'.
220 ejemplo.com
ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo ejemplo.com
250-ejemplo.com Hello ejemplo.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 ejemplo.com
closing connection
Connection closed by foreign host.Si la línea “STARTTLS” aparece en la salida, todo está funcionando correctamente.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.