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.

Creacion de Certificados Ssl Para Sitios Webs en Apache2

Embed Size (px)

Citation preview

Page 1: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 2: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 3: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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).

Page 4: Creacion de Certificados Ssl Para Sitios Webs en Apache2

Editamos nuestra zona de resolución directa.

Y la dejamos de la siguiente manera:

Page 5: Creacion de Certificados Ssl Para Sitios Webs en Apache2

Modificamos la zona de resolución inversa.

Dejándola así:

Page 6: Creacion de Certificados Ssl Para Sitios Webs en Apache2

Editamos nuestro archivo hosts para que podamos resolver en el navegado mediante NOMBRE e IP.

Este será el resultado de la modificación.

Page 7: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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

Ingresamos estas líneas:

Page 8: Creacion de Certificados Ssl Para Sitios Webs en Apache2

Reiniciamos el servicio.

Hacemos pruebas para saber si el DNS quedo bien configurado.

Page 9: Creacion de Certificados Ssl Para Sitios Webs en Apache2

Instalamos nuestro servidor web.

Nos iremos a /var/www y crearemos el directorio para nuestro sitio web “cuil”.

Page 10: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 11: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 12: Creacion de Certificados Ssl Para Sitios Webs en Apache2

2. Instalaremos Openssl para integrarlo con apache.

Verificamos la versión del Openssl.

Page 13: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 14: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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).

Page 15: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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:

Page 16: Creacion de Certificados Ssl Para Sitios Webs en Apache2

# *************************************************************************************

# www.linuxtotal.com.mx# [email protected]

# # 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 seriedatabase = $dir/index.txt # archvio que guarda la bd de certificadosnew_certs_dir = $dir/certificados # dir que guarda los certificados generadoscertificate = $dir/certificadoCA.pem # nombre del archivo del certificado raízprivate_key = $dir/privado/cakey.pem # llave privada del certificado raízdefault_md = md5 # algoritmo de dispersión usadopreserve = 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, obligatoriostateOrProvinceName = match organizationName = matchorganizationalUnitName = optional # optional, campo opcionalcommonName = supplied # supplied, debe estar en la petición emailAddress = optional

# seccion que indica como los certificados deben ser creados[ req ]

Page 17: Creacion de Certificados Ssl Para Sitios Webs en Apache2

default_bits = 1024 # tamaño de la llave, si no se indica 512default_keyfile = key.pem # nombre de la llave privadadefault_md = md5 # algoritmo de dispersión a utilizarstring_mask = nombstr # caracteres permitidos en la mascara de la llavedistinguished_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 organizacion0.organizationName_default = Torres, S.A.organizationalUnitName = Departamento o divisionemailAddress = Correo electronicoemailAddress_max = localityName = Ciudad o distritolocalityName_default = MedellinstateOrProvinceName = Estado o provinciastateOrProvinceName_default = AntioquiacountryName = Codigo del pais (dos letras)countryName_default = COcountryName_min = 2countryName_max = 2commonName = 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 certificadosbasicConstraints = CA:TRUE # especifica bajo que metodo identificar a la llave publica que sera certificadasubjectKeyIdentifier = 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 CAsubjectKeyIdentifier = hash

Page 18: Creacion de Certificados Ssl Para Sitios Webs en Apache2

# *************************************************************************************

Debería quedar así.

Estos son los archivos que deberemos tener dentro del directorio CA en estos momentos.

Page 19: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

-configarchivo de donde tomara la configuracion

Page 20: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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

Visualizamos el certificado raíz.

Visualizamos la llave privada.

Page 21: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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”.

Page 22: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 23: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 24: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 25: Creacion de Certificados Ssl Para Sitios Webs en Apache2

En el mismo host virtual al final del fichero agregamos estas líneas que son la configuración del sitio seguro:ServerName torres.comDocumetRoot /var/www/cuilDirectoryIndex 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.

Page 26: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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.

Page 27: Creacion de Certificados Ssl Para Sitios Webs en Apache2

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_001http://www.google.com.co

Page 28: Creacion de Certificados Ssl Para Sitios Webs en Apache2