instalación de certificado ssl

9
INSTITUTO TECNOLÓGICO DE ZACATEPEC Ingeniería en Tecnologías de la Información y Comunicaciones Taller de Seguridad Web Gpo: TIA Profesor: Mario Humberto Tiburcio Zúñiga Tarea 6: Creación de un certificado autofirmado para configuración de un servidor Web con SSL Alumno: Juan Carlos Alvarado Rivera – 11090409

Upload: don-carlo

Post on 23-Jan-2016

10 views

Category:

Documents


0 download

DESCRIPTION

Utilizando Ubuntu

TRANSCRIPT

Page 1: Instalación de Certificado SSL

INSTITUTO TECNOLÓGICO DE ZACATEPEC

Ingeniería en Tecnologías de la Información y

Comunicaciones

Taller de Seguridad Web

Gpo: TIA

Profesor: Mario Humberto Tiburcio Zúñiga

Tarea 6: Creación de un certificado autofirmado para configuración

de un servidor Web con SSL

Alumno: Juan Carlos Alvarado Rivera – 11090409

Page 2: Instalación de Certificado SSL

Introducción

Una Autoridad Certificadora es una entidad de confianza del emisor y del receptor de una

comunicación.

Esta confianza de ambos en una tercera parte confiable permite que cualquiera de los dos confíe a su

vez en los documentos firmados por la Autoridad Certificadora, en particular, en los certificados que

identifican ambos extremos.

Un certificado es un documento emitido y firmado por una Autoridad Certificadora que identifica una

clave pública con su propietario. Cada certificado está identificado de un amanera unívoca y tiene un

periodo de validez consignado en el propio certificado.

Un certificado permite validar la identidad del otro extremo de una comunicación ya sea una persona o

una persona o un dispositivo.

En el desarrollo de la presente practica se aplican los conceptos de Autoridad certificadora y certificado

Digital, creando un certificado autofirmado que se instala en el servidor Apache para enviarlo a los

clientes que hagan peticiones al servidor para establecer **

Objetivo(s)

Configurar un servidor web con SSL creando un certificado digital autofirmado.

Procedimiento

Etapa 1: Creación del Certificado Digital

Paso 1: Creación de los directorios y archivos de trabajo

Se abre una terminal en Ubuntu y en el directorio del usuario se crea una carpeta con el nombre CA, el

cual será el directorio de trabajo

mkdir CA

Se accede al directorio CA y se crean las carpetas “certificados” y “privado”

cd CA

mkdir certificados privado

Dentro del directorio CA, se crean los archivos serial e index.txt, que en conjunto forman la base de

datos de los certificados autofirmados. Para esto se utilizan los siguientes comandos:

Page 3: Instalación de Certificado SSL

echo '01' > serial

touch index.txt

Se crea un archivo con nombre openssl.cnf con el comando

nano Openssl.cnf

El cual debe contener lo siguiente:

#

***********************************************************************************

**

# 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

serie

database = $dir/index.txt # archivo 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_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

Page 4: Instalación de Certificado SSL

[ 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 = DonCarlo, S.A.

organizationalUnitName = Departamento o division

emailAddress = Correo electronico

emailAddress_max = 40

localityName = Ciudad o distrito

localityName_default = Leon

stateOrProvinceName = Estado o provincia

stateOrProvinceName_default = Guanajuato

countryName = Codigo del pais (dos letras)

countryName_default = MX

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

#

***********************************************************************************

**

Nota: Del contenido anterior la línea con el contenido “0.organizationName_default = DonCarlo, S.A.”

se puede modificar para personalizar el certificado al nombre de la organización.

Page 5: Instalación de Certificado SSL

Paso 2: Creación del certificado raíz

Para la creación del certificado raíz se utiliza el siguiente comando. Cabe mencionar que se pedirá

información sobre la organización durante el proceso de creación del certificado, así como una

contraseña para dicho certificado, la cual debe ser suficientemente segura.

openssl req -new -x509 -extensions v3_ca -keyout privado/cakey.pem -out cacert.pem -days 3650 -

config ./openssl.cnf

El proceso anterior genera dos archivos:

• Un certificado raíz (cacert.pem)

• Una llave privada (privado/cakey

Paso 3: Creación de un certificado para firmarlo

Para este proceso se hace uso del siguiente comando:

openssl req -new -nodes -out doncarlo-cert.pem -config ./openssl.cnf

En este proceso, al igual que en el paso anterior, se pedirán los datos de la organización, así como una

contraseña robusta.

Lo que se obtiene al final del proceso son los archivos:

• doncarlo-cert.pem (el certificado para ser firmado)

• key.pem (La llave privada)

Paso 4: Firmado del certificado

El último certificado creado requiere que sea firmado por los autridad certificadora (que se representa

por el primer certificado que se creó), para lo que se utiliza el siguiente comando:

openssl ca -out certificado-doncarlo.pem -config ./openssl.cnf -days 3650 -infiles doncarlo-cert.pem

El archivo que se obtiene como salida al comando anterior es “certificado-doncarlo.pem”, el cual se

utilizara para enviarlo a los clientes que requieran una conexión segura al servidor.

Page 6: Instalación de Certificado SSL

Etapa 2: Configuración del servidor Apache

Una vez que se cuenta con el certificado autofirmado(certificado-doncarlo.pem) y la llave(key.pem), se

configura el servidor Apache para que pueda utilizar los archivos con extensión .pem en un host virtual.

De manera predeterminada apache cuenta con dos sitios configurados, de los que su configuración se

encuentra definida en los archivos 000-default.conf y default-ssl.conf que se encuentran en el

directorio /etc/apache2/sites-available/.

La configuración que se necesita realizar para que el servidor haga uso de los archivos que constituyen

el certificado digital consiste en:

Paso 1: Habilitar el modulo SSL

Se habilita el modulo ssl con el siguiente comando:

sudo a2enmod ssl

Se reinicia el servidor apache

sudo service apache2 restart

Paso 2: Alojar los archivos del certificado digital en el sistema de archivos de apache

Un aspecto importante a tomar en cuenta al realizar la configuración de apache, es que se debe contar

con privilegios de root

Se crea una carpeta con nombre “ssl” dentro del directorio apache2

mkdir /etc/apache2/ssl

Se accede al directorio ssl y se copian, en este, el certificado firmado y la llave

cd ssl

cp /home/usuario/CA/certificado-doncarlo.pem

cp /home/usuario/CA/key.pem

Page 7: Instalación de Certificado SSL

Paso 3: Modificación del archivo default-ssl.conf

Se abre, con un editor de texto, el archivo default-ssl.conf que se encuentra dentro de la carpeta

/etc/apache2/sites-available/

nano /etc/apache2/sites-available/default-ssl.conf

La modificación consiste en igualar el contenido del archivo con el del siguiente ejemplo:

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

ServerAdmin [email protected]

ServerName your_domain.com

ServerAlias www.your_domain.com

DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on

SSLCertificateFile /etc/apache2/ssl/certificado-doncarlo.pem

SSLCertificateKeyFile /etc/apache2/ssl/key.pem

<FilesMatch "\.(cgi|shtml|phtml|php)$">

SSLOptions +StdEnvVars

</FilesMatch>

<Directory /usr/lib/cgi-bin>

SSLOptions +StdEnvVars

</Directory>

BrowserMatch "MSIE [2-6]" \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

</IfModule>

Nota: Los aspectos a tomar en cuenta son ServerAdmin, ServerName, ServerAlias, DocumentRoot y las

rutas de la ubicación del certificado SSL y la llave.

Una vez que se terminó la modificación del archivo default-ssl.conf se guardan los cambios.

Las rutas del certificado firmado y de la llave que se indican en el archivo deben tener el nombre de los

archivos generados en el proceso de creación del certificado que fueron copiados al directorio

/etc/apache2/ssl/

Page 8: Instalación de Certificado SSL

Paso 4: Activar el sitio SSL

Para activar el sitio SSL que se configuró en el paso anterior se utilizan los siguientes comandos, los

cuales se deben ejecutar con privilegios de root.

a2ensite default-ssl.conf

Además se reinicia el servidor apache.

service apache2 restart

Paso Final: Prueba del certificado en el navegador

Se abre un navegador y se indica la dirección siguiendo el siguiente patrón:

https://nombre_dominio_o _IP_del_servidor

El navegador mostrara una alerta debido a que en su lista de Autoridades Certificadoras no se

encuentra registrada la autoridad que firmo el certificado. Solo basta con aceptar el certificado y

visualizar el contenido del mismo para confirmar que se instaló correctamente en el servidor Apache y

que el modulo SSL funciona correctamente.

Page 9: Instalación de Certificado SSL

Conclusión

El objetivo de la práctica se cumplió satisfactoriamente ya que al realizar las pruebas necesarias en el

navegador se obtuvieron los resultados esperados.

La creación de los certificados digitales es un proceso sencillo, sin embargo es necesario cuidar los

detalles con la información que se proporciona, tal como el uso de contraseñas que deben cumplir con

una serie de requerimientos para garantizar la integridad de la información que contiene el certificado.

La instalación del certificado firmado en el navegador también resulta sencillo, siguiendo los pasos

correctamente.

Fuentes de información

http://www.hostdime.com.co/blog/como-crear-un-certificado-ssl-en-apache-para-ubuntu-14-04/