Está en la página 1de 28

CREACION DE CERTIFICADOS SSL PARA SITIOS WEBS EN APACHE

DEBIAN LENNY.

El SSL (Secure Socket Layer) es un protocolo de seguridad desarrollado por la


empresa Netscape Communications para lograr que la transmisión de datos
entre un servidor y un usuario, o viceversa, a través de Internet, sea
completamente segura. El SSL es un protocolo abierto, por lo que puede ser
empleado por cualquier fabricante de aplicaciones para Internet, siendo una de
sus grandes ventajas el hecho de que se pueda utilizar con cualquiera de los
servicios de Internet (WWW, FTP, noticias, correo, ), aunque lo más normal es
que se utilice para el tráfico a través de la WWW. El protocolo se basa en la
utilización de un sistema de cifrado que emplea algoritmos matemáticos y un
sistema de claves que solamente conocen el usuario y el servidor. Estas claves
permiten la encriptación de los datos para que nadie que no las tenga pueda
leer su contenido.

Esto significa que cualquier tipo de información que se transmita desde un


servidor seguro y utilizando un navegador con tecnología SSL, viajará a través
de Internet a salvo de miradas indiscretas.

Para utilizar el protocolo SSL es necesario que el servidor de Internet que


soporte SSL se encuentre en posesión del certificado digital de seguridad
correspondiente (viene otorgado por una agencia independiente debidamente
autorizada, por ejemplo Verisign o Thawte), y por parte del usuario, es preciso
disponer de un visualizador WWW que soporte el protocolo SSL (tanto Netscape
como Internet Explorer lo soportan).

El sistema de seguridad SSL se basa en el algoritmo (Clave pública / Clave


privada) de la RSA, que utiliza una clave de seguridad de 40 o 128 bits de
longitud. Esto implica que para romper esta clave y acceder a la información
que protege, sería necesario utilizar un ordenador personal durante varios
años. El aumento en la potencia de cálculo de los ordenadores personales
reduce progresivamente el tiempo necesario para romper las claves de cifrado,
lo que se salva con el aumento en el número de bits utilizados.

Cuando se conecta a un servidor seguro (https://www...), los navegadores


avisan de esta circunstancia mediante un candado de color amarillo en la parte
inferior y además permiten comprobar la información contenida en el
certificado digital que lo habilita como servidor seguro. SSL permite recoger
datos tales como información de tarjetas de crédito, etc. en un entorno seguro
puesto que la información enviada a través de un formulario seguro es
transmitida al servidor de forma encriptada.
1. Comenzamos configurando nuestro DNS y generamos los registros
necesarios para que nuestro sitio pueda ser visualizado en nuestro
explorador web.

Modificamos el archivo de configuración del DNS.


Estas serán nuestras zonas de configuración y el nombre del dominio
“torres.com”.

Copiamos las zonas que trae por defecto el bind9 para nuestros archivos
(directa-inversa).
Editamos nuestra zona de resolución directa.

Y la dejamos de la siguiente manera:


Modificamos la zona de resolución inversa.

Dejándola así:
Editamos nuestro archivo hosts para que podamos resolver en el
navegado mediante NOMBRE e IP.

Este será el resultado de la modificación.


Este archivo le indica al DNS que resuelva nuestra IP y nuestro DOMINIO.

Ingresamos estas líneas:


Reiniciamos el servicio.

Hacemos pruebas para saber si el DNS quedo bien configurado.


Instalamos nuestro servidor web.

Nos iremos a /var/www y crearemos el directorio para nuestro sitio web


“cuil”.
Copiamos el archivo y la carpeta que contiene nuestra página web al
directorio que

Creamos “/var/www/cuil”.

Editamos el archivo para host virtuales que posee el apache.


Agregamos el directorio de nuestra pagina “DocumentRoot
/var/www/cuil” y el “DirectoryIndex Cuil.html”.

Vamos al navegador y comprobamos que nuestro servidor apache esta


funcionando correctamente.
2. Instalaremos Openssl para integrarlo con apache.

Verificamos la versión del Openssl.


3. Utilizaremos un directorio de trabajo para mejor entendimiento en
/etc/ssl llamado CA donde quedara todo lo relacionado con la entidad
certificadora.

Crearemos dos directorios dentro de CA llamados certificados y


privado que almacenara los certificados y la llave privada.
Generamos estos dos archivos para la correcta organización de la
Autoridad Certificadora.

Hacemos una copia del archivo de configuración de ssl y después lo


dejamos en blanco para posteriormente ingresar los datos que
necesitamos para nuestra entidad (CA).
Movemos el archivo en blanco “openssl.cnf” dentro del directorio de
nuestra entidad certificadora (CA).

Editamos el archivo de configuración y agregamos las siguientes líneas:


#
*******************************************************************
******************
# www.linuxtotal.com.mx
# sergio.gonzalez.duran@gmail.com
#
# Archivo de configuracion para openssl
#
# ***** openssl.cnf ******

dir = . # variable que establece el directorio de trabajo

# seccion que permite convertirnos en una CA


# solo se hace referncia a otra sección CA_default
[ ca ]
default_ca = CA_default

[ 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/certificadoCA.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_match # indica el nombre de la seccion
# donde se especifica que
campos son
# obligatorios, opcionales y
cuales deben ser
# iguales al certificado raíz

# seccion de politicas para la emision de certificados


[ policy_match ]
countryName = match # match, obligatorio
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional # optional, campo
opcional
commonName = supplied # supplied, debe estar en
la petición
emailAddress = optional

# seccion que indica como los certificados deben ser creados


[ req ]
default_bits = 1024 # tamaño de la llave, si no se
indica 512
default_keyfile = key.pem # nombre de la llave privada
default_md = md5 # algoritmo de dispersión a
utilizar
string_mask = nombstr # caracteres permitidos en la
mascara de la llave
distinguished_name = req_distinguished_name # seccion para el nombre
distinguido (DN)
req_extensions = v3_req # seccion con mas extensiones que
se añaden a la
# peticion del certificado

# seccion del nombre distinguido, el valor es el prompt que se vera en


pantalla.
# datos del propietario del certificado.
# esta seccion define el contenido de datos de id que el certificado
llevara.
[ req_distinguished_name ]
0.organizationName = Nombre de la organizacion
0.organizationName_default = Torres, S.A.
organizationalUnitName = Departamento o division
emailAddress = Correo electronico
emailAddress_max =
localityName = Ciudad o distrito
localityName_default = Medellin
stateOrProvinceName = Estado o provincia
stateOrProvinceName_default = Antioquia
countryName = Codigo del pais (dos letras)
countryName_default = CO
countryName_min = 2
countryName_max = 2
commonName = Nombre comun (hostname o IP)
commonName_max = 64

# si en la linea de comandos se indica la opcion -x509,


# las siguientes extensiones tambien aplican
[ v3_ca ]
# indica que se trata de un certificado CA raíz con autoridad para
# firmar o revocar otros certificados
basicConstraints = CA:TRUE

# especifica bajo que metodo identificar a la llave publica que sera


certificada
subjectKeyIdentifier = hash

# especifica como identifcar la llave publica

authorityKeyIdentifier = keyid:always,issuer:always

# extensiones de la opcion req


[ v3_req ]
basicConstraints = CA:FALSE # los certificados firmados no
son CA
subjectKeyIdentifier = hash
#
*************************************************************************
************

Debería quedar así.

Estos son los archivos que deberemos tener dentro del directorio CA en
estos momentos.
4. Ahora crearemos el certificado raíz de la entidad certificadora y nos
pedirá una frase secreta, la información que contendrá nuestro
certificado.

Explicación de los parámetros que hacen parte del comando para la


generación de un certificado raíz.

req -new -x509  sirve para crear un nuevo certificado autofirmado.

-extensions v3_ca sirve para crear el certificado raíz CA (Entidad


certificadora).

-keyout sirve para especificar el nombre y donde se guardara la llave


privada.

-out  sirve para mostrar el nombre del certificado raíz CA.

-days 3650 sirve para especificar el periodo de validez del certificado


(3650 días=10años). Si no se especifica el tiempo el certificado tendrá
una duración de 30 días.

-config archivo de donde tomara la configuracion


Lo hecho anteriormente genera dos archivos:
Certificado raíz= certificadoCA.pem
Llave privada= /etc/ssl/CA/privado/cakey.pem

Visualizamos el certificado raíz.

Visualizamos la llave privada.


5. Ahora crearemos la solicitud de firmado para el certificado para el nuevo
sitio web “cuil”, donde no nos pedirá una contraseña pero si generara
un llave privada para esta solicitud.

Nos volverá a pedir los datos necesarios para el certificado y el nombre


común deberá ser el mismo que escribimos antes “torres.com”.
req solicitando un certificado nuevo.
-out nombre del certificado que deseamos firmar.
-config de nuevo toma el archivo de configuración que creamos.
-nodes indica que no deseamos contraseña en la llave privada.

6. Ahora podemos ver la petición de firmado para el certificado del nuevo


sitio web.

También podemos ver la llave privada que se genero con la petición de


firmado de certificado.
7. Seguidamente firmaremos la solicitud anterior. Nos solicitara la frase
secreta que introducimos en la creación del certificado raíz que nos
señala como un entidad certificadora y que tenemos la facultad de
firmar esta clase de solicitudes.

Nos preguntara si deseamos firmar este certificado.


8. Modificaremos el host virtual para que nos dirección de http:// a https://
donde nos indica que el sitio es seguro y utiliza ssl.

Indicamos este parámetro RedirectPermanent / https://torres.com


para que todas las peticiones que el usuario haga por el puerto 80 las
envié al puerto seguro 443.
En el mismo host virtual al final del fichero agregamos estas líneas que
son la configuración del sitio seguro:
ServerName torres.com
DocumetRoot /var/www/cuil
DirectoryIndex Cuil.html

“SSLEngine on” es para encender el motor de SSL.


“SSLcertificateFile” ruta donde se almacena nuestro certificado
firmado. (/etc/ssl/CA/certificadofirmado-torres.pem).
“SSLCertificateKeyFile”ruta donde se almacena la llave privada.
(/etc/ssl/CA/key.pem).

Ahora habilitamos el modulo de ssl para que apache sea seguro.


9. Reiniciamos el servicio para que tome los cambios hechos en los
archivos de configuración del servidor web.

Después de reiniciar el servicio, nos dirigimos al navegador y en la barra


de direcciones colocamos http://127.0.1.1 y no direccionara a
https://127.0.1.1 y nos dirá que el certificado no es confiable por que el
emisor de este certificado no es confiable.

La solución es agregar una excepción para que confié en este


certificado emitido por nuestra entidad certificadora CA.
Agregamos la excepción.

Y como vemos ya nuestro sitio posee un certificado emitido por una


entidad certificadora,
Y nos mostrara https://127.0.1.1 como sitio confiable y seguro.

Referencias:
http://www.linuxtotal.com.mx/index.php?cont=info_seyre_001
http://www.google.com.co

También podría gustarte