Professional Documents
Culture Documents
“SSL_3”
ALEJANDRO ARBOLEDA
SENA2009
En documetos anteriores hemos instalado una entidad certificadora que firme certificados a servidores web,
comercialmente o en sistemas de acceso público, no se recomiendan certificados autofirmados pues el aviso de
autoridad de certificación no reconocida generará desconfianza entre los usuarios, pero en entorno LAN es ideal,
asegurando la autenticidad de estos cuando un cliente intenta conectarse, aún así este metodo de autenticación no
se reconoce plenamete como confiable y las aplicaciones web exigen cada vez a un nivel mas alto nivel el
cumplimiento de los principios de seguridad, preocupa cuando un servidor envia a un cliente informacion
importante para estos sin estar seguro que el cliente es quien dice ser.
SSL_3 surge como una solución a la anterior preocupación, incorporando nuevas funciones a las comunicaciones
cifradas y aseguradas con ssl, el servidor puede requerir, además, otro certificado al cliente, de manera que ámbos
extremos autentifiquen la comunicación. En esto es precisamente que se basa este documento.
A lo largo del documento indicaremos como permitir el acceso a nuestra aplicación a aquellos usuarios que
posean el certificado que antes se habra enviado mientras que si no lo tienen no podrán acceder de ningún modo.
Como prerequisitos debemos tener un sitio web sencillo corriendo, preferiblemente asociado a un registro de un
servidor dns, con lo que accederemos al servidor web de una manera mas sencilla y elegante.
1-Habilitar las herramientas de opssl
Comenzamos instalando la utilidad openssl que nos incorporara en el sistema las herramientas para
la implementación de la entidad certificadora y el asistente de generacion de certificados.
Creamos el directorio raiz de la futura entidad certificadora, donde almacenaremos los archivo de
configuración de ssl, las claves y certificados que interactuan en las comunicaciones seguras.
#mkdir /etc/ssl/CA
Comenzamos a poblar el directorio raiz con la carpeta que contendra la clave privada de la entidad
certificadora que posteriormente crearemos
# mkdir /etc/ssl/CA/privado
Cuando instalamos openssl se genera el archivo “openssl.cnf” donde estan las variables que
definiran la manera de actuar y las actividades de la entidad certificadora y el asistente de
generacion de certificados, este archivo debemos copiarlo al directorio raiz creado
Nota: el archivo original “openssl.cnf” que se queda en /etc/ssl/ debera cambiar de nombre para que
al momento de utilizar las herramientas de openssl no confunda los archivos de refenrecia
Al listar el contenido del directorio raiz de la entidad certificadora deberemos ver lo anteriormente
creado.
2- Ahora crearemos la entidad certificador que nos permitira la creación, firma y validación de
certificados digitales en un ambiente de red interna
#openssl req -x509 -newkey rsa:2048 -days 3650 -keyout privado/cakey.pem -out
Cacertificado.pem -config /etc/ssl/CA/openssl.cnf
En esta cadena hemos generado la clave privada y el certificado que autoacredita a la entidad
certificadora como un tercero confiable al intercambiar datos en conexiones seguras, se generan
entonces los archivos contenedores del certificado “CAcertificado.pem” y la clave privada de la
entidad “cakey.pem”.
Nos pedira que genere una contraseña con la que asegurara la creación de los datos generales sobre
los que se validara la identidad de la entidad certificadora, con una lista como la siguiente.
3- Con la entidad creada, podemos recurrir a ella para firmar certificados de servidores, clientes,
entre otros, en primer lugar generamos una clave que se ingresara al certificado posteriomente.
Al tener la llave procedemos a crear el certificado del sitio web que queremos autenticar este tendra
un formato “.pem” y se creara con la siguiente cadena de comandos.
4- Para firmar este certificado necesitamos indicarle a la CA, una serie de parametros que
habilitarán el firmado de certificados a servidores, creamos un archivo indicando la manera de
hacerlo
#nano /etc/ssl/CA/configservidor.cnf
Ahora podemos ingresar la cadena de comandos que firmara el certificado generado anteriormente
Podemos ver lo que hasta el momento llevamos para verificar que los comando se hallan entrado
con las rutas y los parametros correctos
#ls /etc/ssl/CA/
5- Con la entidad certificadora creada y los certificados del servidor web expedidos, debemos
indicarle al servidor web que estamos configurando, las rutas y variables para trabajar con ssl3.
La parte modificada del archivo de configuración del servidor web, deneria verse como este.
El archivo configurado y modificado totalmente para el servidor debe tener las rutas y las variables
parceidas a estas
################## /etc/apache2/sitesavailable/default Modificado ###################
<VirtualHost *:80>
ServerName www.alejo.com
ServerAdmin webmaster@localhost
RedirectPermanent / https://www.alejo.com
DocumentRoot /var/www/buscador/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/buscador/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
DirectoryIndex Buscar_com_ve.html
</Directory>
ScriptAlias /cgibin/ /usr/lib/cgibin/
<Directory "/usr/lib/cgibin">
AllowOverride None
Options +ExecCGI MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName www.alejo.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/buscador/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/buscador/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
DirectoryIndex Buscar_com_ve.html
</Directory>
SSlEngine on
SSLCACertificateFile /etc/ssl/CA/CAcertificado.pem
SSLCertificateFile /etc/ssl/CA/certificadoserverserver.pem
SSLCertificateKeyFile /etc/ssl/CA/claveprivadaserver.pem
SSLVerifyClient require
</VirtualHost>
######################### ###########################
Guardamos los cambios, podemos reiniciar el servidor aunque en el momento puede mostrar
incovenientes por falta de los componentes de ssl3, debemos mirar “/var/log/apache/error.log” para
verificar que posibles errores tenemos
6- Ahora creamos el certificado que permite las comunicaciones con ssl3, debemos generar el
certificado para cliente web, pero antes es necesario indicarle al directorio de la CA donde estan los
parametros para generar certificados clientes, se crea el archivo “configclient.cnf” e ingresamos
estas lineas:
basicConstraints = critical,CA:FALSE
extendedKeyUsage = clientAuth
#nano configclient.cnf
Ahora podemos entrar la orden y generar la peticions para obtener el certificado cliente, primero
creamos la clade privada que se incoroporara en el certificado
al generar la clave sera necesario ingresar una contraseña requerida para el manejo del certificado
cliente, podemos ver el contenido de la clave que si bien no es legible nos indica que se genero
correctamente.
#more /etc/ssl/CA/clavecliente.pem
Terminamos la peticion con la autofirma del certificado con la CA instalada en el equipo local, con
la siguiente linea la entidad certificadora verificara que los datos del archivo son reales y generara el
certificado cliente que pedimos.
Nos pedirá la clace privada del servidor web y luego se debera ingresar una nueva contraseña para
el certificado con el nuevo formato
Copiamos el certificado a una ruta de facil acceso para el asistente del cliente web
Nos conectamos al servidor local que hemos configurado y debemos ver la alerta de sitio web
seguro, donde en primer lugar debemos aceptar el certificado del servidor
damos clic en agregar exepción “add exception...” y vemos un asistente donde se permitira aceptar
el certificado del servidor.
Luego de confirmar la instalción del certificado servidor volvemos a conectarnos y debemos ver la
alerta de peticion de certificado cliente
Instalamos el certicado cliente.p12 que nos permitira la conexión al servidor, en este abrimos la ruta
donde se puede agregar siguiendo:
Verificamos que el certificado este ahora en los permitidos por el navegador web
Y al reintentar la conexión debe madarnos al sitio web seguro que hemos configurado
Podemos dar por finalizada la implementación de SSL3 que a partir de este momento permitira el
intercambio de datos cifrados, del cliente al servidor como en SSL2 y del servidor al certificado
nativo del SSL3
imagenes y referencias
www.cisco.com/.../ipj_1-1/ssl.htm
http://blog.osusnet.com/2008/10/11/usando-certificados-ssl-de-cliente-como-sistema-de-
autenticacion-web/
http://www.google.com