Professional Documents
Culture Documents
Soportado por los principales Browsers y Servidores WEB: Internet Explorer, IIS,
Apache, etc.
El servidor SSL tiene varias versiones: *SSL 2 que autentica solo al servidor
*SSL3 que autentica cliente /servidor
Para las aplicaciones que requieren una conexión segura SSL la URL seria https:// ; y
por lo general el servidor escucha por el puerto 443 para SSL.
Las funcione que el protocolo SSL puede cumplir son las siguientes:
-autenticación
-integridad
-confidencialidad
-compresión
-fragmentación
SSL utiliza estos algoritmos:
SSL Utiliza las tecnologías de encriptación así:
*No encryption
*Stream Ciphers
-RC4 con claves de 40-bit
-RC4 con claves de 128-bit
*CBC Block Ciphers
-RC2 con claves de 40-bit
-DES con claves de 40-bit
-DES con claves de 56-bit
-riple-DES con claves de 168-bit
-Idea (con claves de 128-bit)
-Fortezza (con claves de 96-bit)
PROTOCOLOS SSL
mkdir CA
ls CA
mkdir certificados
mkadir privado
[ CA_default ]
serial = $dir/serial # archivo que guarda el siguiente número de serie
database = $dir/index.txt # archvio que guarda la bd de certificados
new_certs_dir = $dir/certificados # dir que guarda los certificados generados
certificate = $dir/cacert.pem # nombre del archivo del certificado raÃz
private_key = $dir/privado/cakey.pem # llave privada del certificado raÃz
default_md = md5 # algoritmo de dispersión usado
preserve = no # Indica si se preserva o no el orden de los
# campos del DN cuando se pasa a los certs.
nameopt = default_ca # esta opcion y la siguiente permiten mostrar
# detalles del certificado
certopt = default_ca
policy = policy_anything # indica el nombre de la seccion
# donde se especifica que campos son
# obligatorios, opcionales y cuales deben ser
# iguales al certificado raÃz
# especifica bajo que metodo identificar a la llave publica que sera certificada
subjectKeyIdentifier = hash
[ v3_client ]
basicConstraints = CA:FALSE # los certificados firmados no son CA
#subjectKeyIdentifier = hash
extendedKeyUsage = clientAuth
# *************************************************************************************
> ls -l
drwxr-xr-x 2 root root 4096 ene 26 13:23 certificados
Todo esta casi listo para crear el certificado raíz, recordemos que estecertificado es el
que nos convertirá en una autoridad certificadora CA, nos pedira un password par que
la autoridad certificadora pueda firmar peticiones de certificados.
openssl req -new -x509 -extensions v3_ca -keyout privado/cakey.pem -out cacert.pem
-days 3650 -config ./openssl.cnf
....++++++
.......++++++
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
-----
nano cacert.pem
nano privado/cakey.pem
En este punto, ya tenemos un certificado raíz que nos válida como CA, claro sin mas
autoridad que nuestro propio dominio pero podemos crear certificados no solo para
https, sino también spop, o simap o crear autentificación para vpn's a través de
aplicaciones como stunnel.
......................................................++++++
.......++++++
-----
You are about to be asked to enter information that will be incorporatedinto 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
-----
Lo último que nos pregunto es el nombre común (CN common name), aqui es
sumamente importante indicarlo igual a como esta el certificado raíz generado
previamente, como se trata de un servidor web, lo correcto es poner www.jolman.net
TGVvbjETMBEGA1UECBMKR3VhbmFqdWF0bzELMAkGA1UEBhMCTV
gwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMMvo7xg3vmdlf/
38yA68uzNq2WYTtkyecuBnUgocOqDgc0Yl2hrfXN6lHl65kxeRFVdEBYh
GgA7JoISivuDTvWwVOIxmH5HOFzZlIPIZ3xThHCdWUKipXhcsVCTGV
+rbB1F9kkIAMrmtaNH2+Zj261jdB7eX960l1EqQaWt71dJAgMBAAGgOzA
5BgkqhkiG9w0BCQ4xLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGVfA
/CDDXl6LQs1MH/XItqJl/8kMA0GCSqGSIb3DQEBBAUAA4GBAJH0sO7bR+
dJL67pxK5oEG9LPA2KcP+W7Vn5edpaLtUs/jYyvhQaCdSBxbMkV42nmt9DGD
5p5caTFk3M5guV9f087K+eYnUGILGQS51tXFcmYramZLETzs7nVfwGnXGsDG
yKDkG6VTkx46pzJrRTJfWBpWpo4FWg/Fi2l4E4PLv8
organizationName :PRINTABLE:'jolmanS.A.'
organizationalUnitName:PRINTABLE:'redes'
localityName :PRINTABLE:'Leon'
stateOrProvinceName :PRINTABLE:'Guanajuato'
countryName :PRINTABLE:'MX'
commonName :PRINTABLE:'www.jolman.net'
02
#> ls -l certificados
total 4
#> ls -l certificado-jolman.pem
Y podemos inspeccionarlo:
Hay algunas aplicaciones (no Apache) que requieren estos dos elementos en un solo
archivo, como en el caso de stunnel:
# > nano key.pem certificado-jolman.pem > key-cert-jolman.pem
Simplemente se concatenan los dos archivos en uno. Pero esto no es necesario para
el caso del servidor Web Apache. Lo que hay que hacer es copiar nuestros dos
archivos en un directorio, de hecho podrían quedarse donde están, es lo de menos,
pero por cuestión de orden y organización vamos a copiarlos a /etc/httpd/conf que en
la mayoría de distribucciones es el directorio de configuración del Apache.
NOTA IMPORTANTE: por ningún motivo los copies dentro del directorio raíz del
servicio de Apache como /var/www/html ya que podrías dejar expuestos los archivos a
todo el mundo y ser vulnerados.
Una vez copiados los archivos, hay que crear un servidor virtual en Apache, esto
dentro del archivo de configuración httpd.conf, en algunas distribucciones como
Fedora y otras dentro de /etc/httpd/conf.d hay un archivo llamado ssl.conf que es
donde viene un servidor virtual ya creado, se puede tomar como plantilla.
VirtualHost 192.168.1.127:443
ServerName www.jolman.net
DocumentRoot /var/www/consulta
VirtualHost
Como ya había mencionado antes, si quieres evitar que a tus clientes cada vez que
ingresen a tu sitio salga el molesto diálogo que pide aceptar el certificado, la única
solución es que distribuyas el archivo cacert.pem, recuerda que este archivo es el que
te identifica como una autoridad certificadora. Lo puedes poner a descarga desde tu
propio sitio, o mandarlo por correo, como sea. Cuando el cliente lo tenga en su equipo
deberá importarlo dentro del browser o navegador. Todos los navegadores en sus
preferencias o herramientas tienen una opción de certificados y desde ahí existe un
botón importar para realizar esto.
Pues eso es todo, si todo funcionó bien, tienes ahora un sitio con encriptación de
extremo a extremo y todo el tráfico viaja seguro. (sslv2)
sslv3
[ v3_client ]
basicContraints = CA:FALSE
extendedKeyUsage = ClientAuth
#nano /etc/apache2/sites-available/default
SSLCACertificateFile /etc/ssl/CA/cacert.pem
SSLVerifyClient require