Sie sind auf Seite 1von 9

INSTITUTO TECNOLGICO DE ZACATEPEC

Ingeniera en Tecnologas de la Informacin y


Comunicaciones
Taller de Seguridad Web
Gpo: TIA
Profesor: Mario Humberto Tiburcio Ziga
Tarea 6: Creacin de un certificado autofirmado para configuracin
de un servidor Web con SSL
Alumno: Juan Carlos Alvarado Rivera 11090409

Introduccin
Una Autoridad Certificadora es una entidad de confianza del emisor y del receptor de una
comunicacin.
Esta confianza de ambos en una tercera parte confiable permite que cualquiera de los dos confe 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 pblica con su propietario. Cada certificado est identificado de un amanera unvoca y tiene un
periodo de validez consignado en el propio certificado.
Un certificado permite validar la identidad del otro extremo de una comunicacin 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: Creacin del Certificado Digital
Paso 1: Creacin 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:

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
# 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 seccin CA_default
[ ca ]
default_ca
= CA_default
[ CA_default ]
serial
=
serie
database
=
new_certs_dir =
certificate
=
private_key
=
default_md
=
preserve
=
nameopt
certopt
policy

$dir/serial

# archivo que guarda el siguiente nmero de

$dir/index.txt
#
$dir/certificados
#
$dir/cacert.pem
#
$dir/privado/cakey.pem
md5
#
no
#
#
= default_ca
#
#
= default_ca
= policy_match
#
#
#

archivo que guarda la bd de certificados


dir que guarda los certificados generados
nombre del archivo del certificado raz
# llave privada del certificado raz
algoritmo de dispersin usado
Indica si se preserva o no el orden de los
campos del DN cuando se pasa a los certs.
esta opcion y la siguiente permiten mostrar
detalles del certificado
indica el nombre de la seccion
donde se especifica que campos son
obligatorios, opcionales y cuales deben

ser
#

iguales al certificado raz

# 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 peticin
emailAddress
= optional
# seccion que indica como los certificados deben ser creados

[ req ]
default_bits
default_keyfile
default_md
string_mask
llave
distinguished_name
(DN)
req_extensions
la

=
=
=
=

1024
key.pem
md5
nombstr

#
#
#
#

tamao de la llave, si no se indica 512


nombre de la llave privada
algoritmo de dispersin a utilizar
caracteres permitidos en la mascara de la

= req_distinguished_name
= v3_req

# seccion para el nombre distinguido

# seccion con mas extensiones que se aaden a


#

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 raz 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 lnea con el contenido 0.organizationName_default = DonCarlo, S.A.
se puede modificar para personalizar el certificado al nombre de la organizacin.

Paso 2: Creacin del certificado raz


Para la creacin del certificado raz se utiliza el siguiente comando. Cabe mencionar que se pedir
informacin sobre la organizacin durante el proceso de creacin del certificado, as como una
contrasea 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 raz (cacert.pem)


Una llave privada (privado/cakey

Paso 3: Creacin 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 pedirn los datos de la organizacin, as como una
contrasea 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 conexin segura al servidor.

Etapa 2: Configuracin 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 extensin .pem en un host virtual.
De manera predeterminada apache cuenta con dos sitios configurados, de los que su configuracin se
encuentra definida en los archivos 000-default.conf y default-ssl.conf que se encuentran en el
directorio /etc/apache2/sites-available/.
La configuracin 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 configuracin 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

Paso 3: Modificacin 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 modificacin consiste en igualar el contenido del archivo con el del siguiente ejemplo:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin admin@example.com
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 ubicacin del certificado SSL y la llave.
Una vez que se termin la modificacin 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 creacin del certificado que fueron copiados al directorio
/etc/apache2/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
Adems se reinicia el servidor apache.
service apache2 restart

Paso Final: Prueba del certificado en el navegador


Se abre un navegador y se indica la direccin siguiendo el siguiente patrn:
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.

Conclusin
El objetivo de la prctica se cumpli satisfactoriamente ya que al realizar las pruebas necesarias en el
navegador se obtuvieron los resultados esperados.
La creacin de los certificados digitales es un proceso sencillo, sin embargo es necesario cuidar los
detalles con la informacin que se proporciona, tal como el uso de contraseas que deben cumplir con
una serie de requerimientos para garantizar la integridad de la informacin que contiene el certificado.
La instalacin del certificado firmado en el navegador tambin resulta sencillo, siguiendo los pasos
correctamente.

Fuentes de informacin

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

Das könnte Ihnen auch gefallen