12
CREACIÓN DE CERTIFICADOS DIGITALES CON OPENSSL En esta sección de la investigación se muestra como generar los certificados digitales actuando como una autoridad de certificación (CA). Para ello debemos tener instalado el paquete openssl, si aún no lo tenemos, lo instalamos con: #apt-get install openssl Antes de continuar debemos preparar un directorio en nuestro equipo, este será el directorio base que aloja todos los archivos necesarios para la emisión de certificados que vamos a generar. Nos aseguramos de crear la siguiente estructura de directorio: Tabla 1: Estructura de directorio base para la creación de certificados. Directorio Descripción /root/CA Directorio base a utilizar. /root/CA/certs Directorio para alojar los certificados ya firmados. /root/CA/crl Directorio destinado a almacenar los archivos de lista de revocación de certificados (CRL). /rot/CA/csr Directorio para almacenar las nuevas peticiones de certificados a firmar. /root/CA/private Directorio que almacena las llaves privadas generadas incluyendo la de nuestro CA. /root/CA/serial Archivo almacena el número de serie actual asignado al certificado firmado. /root/CA/crlnumber Archivo que indica el número que tendrá la siguiente lista de revocación de certificados. /root/CA/index.txt Archivo que almacena información de los certificados creados, a manera de una base de datos simple. Figura 1. Listado del directorio base para creación de certificados. Además de esta estructura de directorios creada previamente, se recomienda editar una copia del archivo /etc/ssl/openssl.cnf y colocarla en el directorio de trabajo /root/CA/

Creación de certificados digitales con openssl CA local

Embed Size (px)

DESCRIPTION

Este documento muestra la creación de certificados como una CA local en un sistema Debian Wheezy

Citation preview

Page 1: Creación de certificados digitales con openssl CA local

CREACIÓN DE CERTIFICADOS DIGITALES CON OPENSSL

En esta sección de la investigación se muestra como generar los certificados digitales

actuando como una autoridad de certificación (CA). Para ello debemos tener instalado el

paquete openssl, si aún no lo tenemos, lo instalamos con:

#apt-get install openssl

Antes de continuar debemos preparar un directorio en nuestro equipo, este será el

directorio base que aloja todos los archivos necesarios para la emisión de certificados que

vamos a generar. Nos aseguramos de crear la siguiente estructura de directorio:

Tabla 1: Estructura de directorio base para la creación de certificados.

Directorio Descripción

/root/CA Directorio base a utilizar.

/root/CA/certs Directorio para alojar los certificados ya firmados.

/root/CA/crl Directorio destinado a almacenar los archivos de lista de revocación de certificados (CRL).

/rot/CA/csr Directorio para almacenar las nuevas peticiones de certificados a firmar.

/root/CA/private Directorio que almacena las llaves privadas generadas incluyendo la de nuestro CA.

/root/CA/serial Archivo almacena el número de serie actual asignado al certificado firmado.

/root/CA/crlnumber Archivo que indica el número que tendrá la siguiente lista de revocación de certificados.

/root/CA/index.txt Archivo que almacena información de los certificados creados, a manera de una base de datos simple.

Figura 1. Listado del directorio base para creación de certificados.

Además de esta estructura de directorios creada previamente, se recomienda editar una

copia del archivo /etc/ssl/openssl.cnf y colocarla en el directorio de trabajo /root/CA/

Page 2: Creación de certificados digitales con openssl CA local

Ahora trabajaremos con el archivo copia de openssl.cnf, en nuestro ejemplo se le nombro

tesisgad.cnf, se modificó las siguientes líneas indicadas en la tabla a continuación:

Tabla 2: Parámetros modificados del archivo de configuración para la creación de certificados.

Variable Valor Descripción

Sección CA-default dir /root/CA Directorio raíz de

nuestra autoridad de certificación (CA).

certificate $dir/catesisgad.com.pem Archivo con la clave pública de la autoridad de certificación.

crl $dir/micrl.pem Archivo de lista de revocación de certificados.

private_key $dir/private/catesisgad.com.key Archivo con la clave privada de la autoridad de certificación.

default_days 3650 Valor en días en los que será válido el certificado.

default_crl_days 300 Valor del periodo en el que se deben actualizar la lista crl.

default_md sha1 Valor del tipo de mensaje utlizado se recomienda sha1

Sección req

default_bits 4096 Longitud en bits de la clave privada

Sección req_distinguished_name

countryName_default EC Iniciales del país de emisión del certificado.

stateOrProvinceName_default Loja Estado o provincia de emisión del certificado.

localityName_default Loja Localidad de emisión (ciudad) del certificado.

0.organizationName_default Tesis GAD Nombre de la Organización

organizationUnitName_default Informática Nombre de la unidad organizativa/sección de la Organización

Page 3: Creación de certificados digitales con openssl CA local

Pasos a seguir para la creación del certificado usado como CA local.

1. Ingresamos la siguiente línea de comando en la terminal para crear un certificado

autofirmado, adicionalmente nos pedirá varios datos informativos, en este ejemplo

solo se ingresa algunos datos para diferenciar al certificado.

Figura 2: Creación de certificado de autoridad de certificación (CA).

Tabla 3: Explicación de parámetros para la creación de certificado de CA.

Explicación de parámetros ingresados

req Indica que va a gestionar una petición -new Seguido a req significa nueva petición

-x509 Formato del tipo de certificado -days 3650 Se indica el período de días durante los que

será válido el certificado y su clave privada.

-config /root/CA/tesisgad.cnf Se especifica el archivo de configuración que openssl debe usar.

-keyout /root/CA/private/catesisgad.com.key Se indica el archivo de salida correspondiente a la clave privada del certificado.

-out /root/CA/catesisgad.com.pem Se indica el archivo de salida correspondiente al certificado

Datos Informativos solicitados:

Passphrase: Este dato se refiere a una contraseña con la que estará protegida la clave

privada de nuestro certificado.

Datos de la organización: Datos como el país, ciudad, localización, organización, unidad

organizativa, al momento de haber sido solicitados solo tecleamos enter, esto es porque

nuestro archivo de configuración ya tiene como valores por defecto la información

Page 4: Creación de certificados digitales con openssl CA local

correspondiente a dichos campos, de otra manera ingresamos el valor que creamos

necesario. En este proceso debemos prestar especial atención al momento que nos

solicitan el dato “Common Name”, según el tipo de certificado que vamos a crear,

podemos ingresar un nombre completo de equipo (FQDN) útil para validar servidores, o

en el caso de tratarse de un certificado personal, debería ir el nombre del propietario de

dicho certificado, en el primer caso es necesario que el nombre de equipo sea el mismo

indicado en el registro del servidor DNS que resuelve a dicho servidor. Por último otro

dato importante es la dirección de email asociada a la persona o entidad a la que va

destinado dicho certificado.

Nota: Para poder visualizar en formato textual la información del certificado lo podemos

realizar ingresando los siguientes comandos:

Para la clave secreta:

Figura 3: Información en forma de texto de la clave privada de CA.

Page 5: Creación de certificados digitales con openssl CA local

Para la clave pública (el certificado propiamente dicho).

Figura 4: Información en forma de texto de la clave pública de CA.

También se puede observar información del propósito del certificado creado como se aprecia en la

siguiente figura:

Figura 5: Información acerca del propósito del certificado de CA.

Page 6: Creación de certificados digitales con openssl CA local

Pasos a seguir para la creación del certificado que identificara el servidor de

correo:

1. Creamos una llave privada para el servidor con el siguiente comando:

Figura 6: Creación de clave privada de certificado para servidor de correo.

Tabla 4: Parámetros ingresados para la creación de clave privada de servidor.

Explicación de parámetros ingresados genrsa Indica que se va a generar una clave privada. -des3 Algoritmo de cifrado a utilizar para la clave privada. -out tesisgad.com.key Se indica el archivo de salida correspondiente al

certificado. 4096 Tamaño en bits de la clave privada.

2. Creamos una petición de firma de certificado, con la siguiente línea de comando

creamos un archivo CSR, éste contendrá previamente la información de la

organización que está destinada a nuestro certificado de servidor, este archivo

debe ser enviado al servidor CA para que este lo revise y si cree conveniente lo

firme.

Figura 7: Creación de archivo de petición de certificado para enviar a CA.

Page 7: Creación de certificados digitales con openssl CA local

Tabla 5: Parámetros ingresados para la creación de petición de certificado de servidor.

Explicación de parámetros ingresados

req Indica que va a gestionar una petición. -new Seguido a req significa nueva petición. -key tesisgad.com.key Se indica el archivo de salida

correspondiente a la clave privada del certificado.

-config /root/CA/tesisgad.cnf Se especifica el archivo de configuración que openssl debe usar.

-out tesisgad.com.csr Se indica el archivo de salida csr correspondiente a la petición de firma de certificado.

Datos Informativos solicitados:

Pass phrase: Este dato se refiere a una contraseña con la que estará protegida la clave

privada del certificado.

Datos de la organización: Como se mencionó anteriormente, se ingresa los datos

correspondientes de este certificado para servidor de correo. En la información

proporcionada para esta petición de firma de certificado se ingresó como dato Common

Name, “debian7.tesisgad.com” es necesario que el nombre de equipo sea el mismo

indicado en el registro del servidor DNS que resuelve a dicho servidor, esto para que no

presente errores al momento que el certificado sea usado por los servicios para los que

fue destinado.

3. EL administrador de CA revisara la petición de certificado ingresando lo siguiente:

Figura 8: Fragmento de texto de la petición de certificado de servidor examinado por la CA.

Page 8: Creación de certificados digitales con openssl CA local

Tabla 6: Información de petición de certificado de servidor examinada desde la CA.

Explicación de parámetros ingresados

req Indica que va a gestionar una petición -in /root/CA/tesisgad.com.csr Archivo del cual se va a leer la información

de petición. Este archivo se envió anteriormente desde el servidor que solicita el certificado digital.

-text Presenta en forma de texto la información detallada, en este caso de la petición de certificado.

4. El administrador de la CA procede a ingresar el siguiente comando para generar el

certificado digital solicitado por el servidor en base al archivo de petición recibido.

Figura 9: Fragmento inicial de comando ingresado para firmar la petición y generación de certificado digital.

Page 9: Creación de certificados digitales con openssl CA local

Figura 10: Fragmento final de comando ingresado para firmar la petición y generación de certificado digital .

Aquí luego de revisar la información de certificado tecleamos “y” y luego enter para

firmar el certificado.

5. EL administrador de CA encuentra en este momento el siguiente archivo

/root/CA/certs/01.pem este archivo es el nuevo certificado que debe enviarle al

servidor que anteriormente realizo la petición de firma.

6. Antes de usar la clave privada de servidor creada anteriormente se debe remover

su pass phrase, esto se debe a que tanto el certificado digital y su clave van a ser

usados por servicios del sistema y al poseer una contraseña esta no permite el

inicio automático de los servicios que hacen uso de dichos certificados; para ello

usamos los siguientes comandos [1].

Figura 11: Remover contraseña de clave privada para uso con servicios del sistema.

Pasos a seguir para la creación de certificado personal de usuario.

El tipo de certificado que se va a crear a continuación tiene como propósito autenticar

usuarios y entre las utilidades que este brinda tenemos: validarnos a un servicio

específico que requiera que el usuario sea validado mediante certificado, cifrado y firma

digital de correo electrónico, estos son los usos para los que hemos creado los

Page 10: Creación de certificados digitales con openssl CA local

certificados que tenemos como ejemplo. Para la creación de los certificados digitales

para usuario, debemos seguir los siguientes pasos:

1. Ingresamos la siguiente línea de comando indicada en la siguiente imagen y

procedemos a digitar los datos solicitados, en este ejemplo el propietario de este

certificado será el usuario: ”Benito Barriga”, y será válido por un año. En este paso

se crea la clave privada y la petición de firma de certificado.

Figura 12: Creación de clave privada y petición de firma de certificado digital de usuario.

Tabla 7: Información de parámetros ingresados para la creación de petición de certificado de usuario y su clave

privada.

Explicación de parámetros ingresados Req Indica que va a gestionar una petición. -new Seguido a req significa nueva petición. -nodes Se ingresa para que al momento de

crearse la clave privada esta no sea encriptada.

-out benitob-req.pem Se indica el archivo de salida correspondiente a la petición de firma de certificado.

-keyout private/benitob-key.pem Se indica el archivo de salida correspondiente a la clave privada del certificado.

-days 365 Se indica el período de días durante los que será válido el certificado y su clave privada.

-config /root/CA/tesisgad.cnf Se especifica el archivo de configuración que openssl debe usar.

Page 11: Creación de certificados digitales con openssl CA local

Datos Informativos solicitados:

Datos de la organización a la que pertenece el usuario: Como se mencionó

anteriormente, se ingresa los datos correspondientes al certificado. En la información

proporcionada para este tipo de certificado se ingresó como dato Common Name, “Benito

Barriga” en este ejemplo el nombre del usuario con el que se va a identificar a este

individuo cuando el servicio requiera autenticación por medio de certificado.

2. En este paso el CA correspondiente procede a firmar la petición y generar el

certificado ingresando el comando indicado en la imagen, aquí se visualiza los

datos que se ingresó en dicha solicitud, para firmarla debe teclear “y” dos veces.

Figura 13: Firma de certificado personal de usuario por parte del CA.

Page 12: Creación de certificados digitales con openssl CA local

3. Hasta este instante se creó el certificado y clave privada usuario, ahora

cumpliendo el rol de CA vamos a integrar el certificado (clave pública) del CA que

firmo el certificado, junto con la clave privada y pública del usuario en un archivo

usado para distribución en formato p12. Para realizar esto digitamos en la consola

el comando que se observa en la siguiente imagen, además se le debe

proporcionar al usuario la contraseña con el que dicho contenedor está protegido

[2].

Figura 14: Creación de contenedor en formato distribuible listo para envío al usuario.

4. Para finalizar creamos el archivo de lista de revocación de certificados (CRL),

para ello empleamos el siguiente comando: openssl ca -config /root/CA/tesisgad.cnf -gencrl -out

/root/CA/crl.pem

Nota: El archivo CRL aqui creado es utilizado para informar cuándo se le ha dado de baja

a un certificado digital, por esto es necesario la creación de éste.

Tabla 8: Información de parámetros ingresados para la creación de archivo lista de revocación de certificados.

Explicación de parámetros ingresados Ca

-config /root/CA/tesisgad.cnf Se especifica el archivo de configuración que openssl debe usar.

-gencrl Se indica que se va a generar el archivo CRL

-out /root/CA/crl.pem Se indica el archivo de salida correspondiente a la lista de revocación de certificado.

Bibliografía

[1] E. V. B. Esteban, “Creación y administración de certificados de seguridad mediante

OpenSSL.” [Online]. Available:

http://informatica.uv.es/it3guia/AGR/apuntes/teoria/documentos/Certificados.pdf. [Accessed:

31-Jul-2014].

[2] Sandor, “SSL - Certificado firmado por nuestra propia entidad certificadora |

PlanetaInopia.” [Online]. Available: http://www.planetainopia.com/2013-10-15/ssl-certificado-

firmado-por-nuestra-propia-entidad-certificadora.html. [Accessed: 31-Jul-2014].