27
1 Infraestructura PKI con certificados digitales En Centos Por Wilmer Arlex Castrillòn Grupo: 38110 Instructor Mauricio Ortiz Centro de servicios y gestión empresarial Administración de Redes Sena Medellín 2011

Infraestructura PKI Con Certificados Digitales

Embed Size (px)

Citation preview

Page 1: Infraestructura PKI Con Certificados Digitales

1

Infraestructura PKI con certificados digitales

En Centos

Por

Wilmer Arlex Castrillòn

Grupo:

38110

Instructor

Mauricio Ortiz

Centro de servicios y gestión empresarial

Administración de Redes

Sena

Medellín

2011

Page 2: Infraestructura PKI Con Certificados Digitales

2

Introducción

Una infraestructura PKI (Infraestructura de clave pública) con certificados digitales me permite

confiar en una autoridad certificadora para la seguridad de un sitio web. La tecnología PKI

permite a los usuarios autenticarse frente a otros usuarios y usar la información de los

certificados de identidad (por ejemplo, las claves públicas de otros usuarios) para cifrar y

descifrar mensajes, firmar digitalmente información, garantizar el no repudio de un envío, y

otros usos.

Para la implementación de la infraestructura PKI vamos a utilizar como ejemplo un sitio web

seguro, vamos a mostrar como es el proceso para crear un CA (Entidad certificadora), crear

una petición desde el servidor web, la autofirmaciòn de la petición del realizada por el servidor

web desde nuestra CA y también se dará a conocer como una CA que no es la creada por

nosotros nos firma la petición del servidor web para que nos genere un certificado digital

firmado con la firma de la CA para que garantice que el sitio web seguro cuando sea visitado si

sea un sitio de confianza.

Este trabajo tiene como propósito afianzar conocimiento en nuestro proceso de formación y

dar a conocer cómo trabajar con una infraestructura PKI.

Page 3: Infraestructura PKI Con Certificados Digitales

3

Instalación y configuración del servidor DNS.

Para la implementación se la infraestructura PKI, debemos de tener un servidor DNS para

ingresar con el nombre del sitio web y no con dirección IP.

Que es DNS?

Domain Name System o DNS (en español: sistema de nombres de dominio) es un sistema de

nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a

Internet o a una red privada. Este sistema asocia información variada con nombres de

dominios asignado a cada uno de los participantes. Su función más importante, es traducir

(resolver) nombres inteligibles para los humanos en identificadores binarios asociados con los

equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos

equipos mundialmente.

Instalación:

Para la instalación del servidor DNS en Centos ejecutamos el comando mostrado en la imagen

siguiente.

Ilustración 1

Luego ingresamos al a ruta /var/named/chroot/etc/ y con un editor de textos ingresamos al

archivo de configuración named.rfc1912.zones para configurar las zonas para el dominio con

el cual vamos a trabajar.

Ilustración 2

Page 4: Infraestructura PKI Con Certificados Digitales

4

Ya dentro del archivo especificamos las zonas directa e inversa. En la imagen en un recuadro

azul se muestra como se hace.

Ilustración 3

Zona inversa: Las zonas de búsqueda inversa contienen información necesaria para realizar las

búsquedas inversas. La mayor parte de las consultas proporcionan un nombre y solicitan la

dirección IP que corresponde a ese nombre. Este tipo de consulta es el descrito en la zona de

resolución directa

Zona directa: Las zonas de búsqueda directa contienen la información necesaria para resolver

nombres en el dominio DNS. Deben incluir, al menos, registros SOA y NS, y pueden incluir

cualquier otro tipo de registros de recurso, excepto el registro de recursos PTR.

Ya configurada nuestras zonas, dentro del mismo directorio ingresamos al archivo que se

muestra en la imagen de la maneja que se muestra en el recuadro azul.

Ilustración 4

Page 5: Infraestructura PKI Con Certificados Digitales

5

En dicho archivo configuramos en la opción listen-on port 53 que por defecto trae solo la

dirección de lookback, entonces tenemos que agregar la dirección IP estática de nuestra

interfaz de red.

Ilustración 5

Nos dirigimos a la ruta /var/named/chroot/var/named/ para realizar una copia de la plantilla

del archivo que viene por defecto para configurar el archivo de configuración de las zonas

directa e inversa. Las copias se hacen como se muestra en la siguiente imagen.

Ilustración 6

Utilizamos el comando ls para listar lo que hay dentro del directorio y verificar que las copias

realizadas en el paso anterior se hicieron correctamente.

Ilustración 7

Los archivos directa e inversa se deben configurar para este caso como se muestra en la

imagen siguiente donde:

Page 6: Infraestructura PKI Con Certificados Digitales

6

Server: nombre de la maquina.

Dominio: wilmer.tom

NS: El registro de recursos NS (Name Server) indica los servidores de nombres autorizados para

la zona. Cada zona debe contener registros indicando tanto los servidores principales como los

secundarios. Por tanto, cada zona debe contener, como mínimo, un registro NS.

A: El tipo de registro de recursos A (Address) asigna un nombre de dominio completamente

cualificado (FQDN) a una dirección IP, para que los clientes puedan solicitar la dirección IP de

un nombre de host dado.

CNAME: El registro de nombre canónico (CNAME, Canonical NAME) crea un alias (un sinónimo)

para el nombre de dominio especificado.

PTR: El registro de recursos PTR (PoinTeR) o puntero, realiza la acción contraria al registro de

tipo A, es decir, asigna un nombre de dominio completamente cualificado a una dirección IP.

Este tipo de recursos se utilizan en la denominada resolución inversa.

Utilizamos el comando cat mas los archivos directa e inversa para desplegar los archivos de

configuración de las zonas directa e inversa.

Ilustración 8

Cambiamos el nombre de la maquina con el comando que se muestra en la siguiente imagen.

Ilustración 9

Page 7: Infraestructura PKI Con Certificados Digitales

7

Ahora configuramos el archivo resolv.conf para especificar la dirección IP y el dominio con el

cual se está trabajando. Este archivo es necesario para que nuestro servidor DNS resuelva o

cumpla su función correctamente.

Ilustración 10

Reiniciamos el servicio DNS con el comando mostrado en la imagen siguiente.

Ilustración 11

Ahora procedemos a realizar las pruebas del servicio DNS. Para verifiar que nuestro DNS esta

funcionando correctamente utilizamos el comando nslookup y el FQND o la dirección IP que

vamos a resolver.

Nslookup: Es un programa, utilizado para saber si el DNS está resolviendo correctamente los

nombres y las IP. Se utiliza con el comando nslookup, que funciona tanto en Windows como en

UNIX para obtener la dirección IP conociendo el nombre, y viceversa.

Ilustración 12

Page 8: Infraestructura PKI Con Certificados Digitales

8

Creación de zonas forwarder

Las zonas forwarder se utilizan para resolver dominios no conocidos por nuestro servidor DNS.

Debemos de dirigirnos a la ruta /var/named/chroot/etc/ e ingresamos al archivo de

configuración mostrado en la imagen siguiente en un recuadro azul.

Ilustración 13

Creamos la zona forwarder, en este caso es para el dominio leidy.lab. Se puede observar como

se crea el la siguiente imagen.

Ilustración 14

Luego de realizar las zonas forwarder ingresamos al archivo que se ve en la imagen siguiente.

Ilustración 15

Page 9: Infraestructura PKI Con Certificados Digitales

9

Ingresamos el ID de la red o la superred a la cual vamos a resolver dominios no conocidos. Para

añadir el ID de la red se hace de la manera que no muestra la imagen. Por defecto viene solo

localhost, esto se hace en el parámetro matc-clients y match-destinations.

Ilustración 16

Luego de la configuración anterior reiniciamos el servicio DNS:

Ilustración 17

Page 10: Infraestructura PKI Con Certificados Digitales

10

Procedemos a verificar la resolución del FQND de uno de los registros del dominio leidy.lab.

Utilizamos el comando nslookup mas el nombre a resolver.

Ilustración 18

Instalación del servidor web (httpd)

Un servidor web o servidor HTTP es un programa que procesa cualquier aplicación del lado del

servidor realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas

con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado

del cliente. El código recibido por el cliente suele ser compilado y ejecutado por un navegador

web. Para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente

se utiliza el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación

del modelo OSI.

Para instalar el servidor web tilizamos el comando: yum install httpd

Ilustración 19

Luego nos dirigimos a la ruta /var/www/html para crear un sitio web con un editor de texto,

el archivo en este caso se llama index.html.

Page 11: Infraestructura PKI Con Certificados Digitales

11

Ilustración 20

Dentro del archivo index.html agregamos un mensaje para identificar el sitio.

Ilustración 21

Reiniciamos el servicio con el comando mostrado en la imagen siguiente.

Ilustración 22

Nos dirigimos al navegador para entrar al sitio web. Como tenemos un registro en el servidor

DNS que apunta a www.wilmer.tom ingresamos a nuestro sitio web con dicho nombre.

Nota: Si tuviéramos mas de un sitio web se agrage después de www.wilmer.tom el nombre del

otro sitio. Por ejemplo http://www.wilmer.tom/prueba.

En la imagen se puede observar el mensaje con el que identificamos el sitio.

Ilustración 23

Page 12: Infraestructura PKI Con Certificados Digitales

12

Entidad Certificadora

Es una entidad de confianza, responsable de emitir y revocar los certificados digitales o

certificados, utilizados en la firma electrónica, para lo cual se emplea la criptografía de clave

pública. Jurídicamente es un caso particular de Prestador de Servicios de Certificación.

La creación de nuestra propia entidad certificadora nos va a servir para generar una petición

para un sitio web seguro. Vamos a generar dicha petición para utilizar un sitio web seguro y

confiable. Cuando generamos la petición esta incluye el certificado digital del servidor y la

clave publica del servidor, se la enviamos a la CA la cual con la clave privada nos firma la

petición y así nos genere un certificado digital que contiene la llave pública del servidor y la

firma digital de la CA, y por aparte nos envía en certificado digital de la CA para instalarlo en el

navegador.

Que es un certificado digital:

Es un documento digital mediante el cual un tercero confiable (una autoridad de certificación)

garantiza la vinculación entre la identidad de un sujeto o entidad (por ejemplo: nombre,

dirección y otros aspectos de identificación) y una clave pública.

Que es una firma digital:

Se dice firma digital a un esquema matemático que sirve para demostrar la autenticidad de un

mensaje digital o de un documento electrónico. Una firma digital da al destinatario seguridad

en que el mensaje fue creado por el remitente, y que no fue alterado durante la transmisión.

Las firmas digitales se utilizan comúnmente para la distribución de software, transacciones

financieras y en otras áreas donde es importante detectar la falsificación y la manipulación.

Nota: Si no queremos crear un CA propia si no que queremos que la petición la firme una CA ya

existente y que dicha CA sea un entidad certificadora raíz solo lo que tenemos que hacer es

solicitar una petición de certificado digital para un sitio web, pero esta solicitud ya se hace a

través de la pagina oficial de dicha CA. Existen muchas entidades certificadoras en el mundo,

en internet las pueden encontrar.

En esta ocasión yo creo mi propia CA por que era para practicas de estudio y quería aprender a

como crear un CA y como se firmaba una petición. Utilizamos la herramienta openssl para

crear la CA, crear la petición, firmar la petición e instalar en certificado digital de la CA que

firmo la petición.

Que es OpenSSL?

OpenSSL es un proyecto de software desarrollado por los miembros de la comunidad Open

Source para libre descarga y está basado en SSLeay, desarrollado por Eric Young y Tim Hudson.

Page 13: Infraestructura PKI Con Certificados Digitales

13

Consiste en un robusto paquete de herramientas de administración y bibliotecas relacionadas

con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y

navegadores web (para acceso seguro a sitios HTTPS).

Estas herramientas ayudan al sistema a implementar el Secure Sockets Layer (SSL), así como

otros protocolos relacionados con la seguridad, como el Transport Layer Security (TLS). Este

paquete de software es importante para cualquiera que esté planeando usar cierto nivel de

seguridad en su máquina con un sistema operativo libre basado en GNU/Linux. OpenSSL

también permite crear certificados digitales que pueden aplicarse a un servidor, por ejemplo

Apache.

Creación de la entidad certificadora

Por defecto en el sistema operativo centos el paquete de OpenSSL ya viene instalado, en caso

de que no este instalado ejecutamos el comando: yum install openssl

Luego de tener instalado el paquete de openssl nos dirigimos a la ruta /etc/pki/tls/misc,

dentro de ese directorio desplegamos el contenido con el comando ls y veremos varias scripts,

en el único script que nos vamos a enfocar en el que se llama CA. Utilizamos un editor de texto

para abrir el contenido del script CA, para añadir un parámetro que le hace falta al script para

crear una CA verdadera.

Todo en procedimiento anterior se puede observar en la siguiente imagen.

Ilustración 24

Ya dentro del script nos dirigimos el parámetro Making CA certifícate y debajo de dicho

parámetro aparecen otros dos que son: $REQ y $CA, a dichos parámetro le vamos a agregar el

siguiente enunciado: -extensions v3_ca. Este procedimiento se puede observar en la imagen

que se muestra a continuación y se puede también ver en donde o en que parte del parámetro

hay que agregarlo.

Luego se agregar el enunciado guardamos los cambios hechos.

Page 14: Infraestructura PKI Con Certificados Digitales

14

Ilustración 25

Luego de hacer los cambios en el script procedemos a ejecutarlo. Antes de ejecutar el script

utilizamos el comando ./CA – h para ver las opciones con las que se puede ejecutar el script o

para que deseamos ejecutar el script. Dicho procedimiento se puede ver claramente en la

imagen a continuación.

Como yo voy a crear una CA ejecutamos el script así: ./script –newca.

Ilustración 26

Presionamos enter para empezar a crear la CA y luego nos pide que digita una password para

generar la clave privada de la CA.

Ilustración 27

Cuando ya ingresemos el password el script nos empieza a preguntar por los parámetros con

que vamos a generar nuestra CA. Estos parámetros son: País, provincia o región, ciudad,

nombre de la organización, nombre un la unidad organizativa, nombre común de la CA (como

se va a llamar la CA), email. Cuando llenemos estos parámetros damos enter hasta donde nos

Page 15: Infraestructura PKI Con Certificados Digitales

15

pide la clave que digitamos al principio en el script. Todo lo anterior se puede ver en la

siguiente imagen.

Ilustración 28

Aquí es donde no pide la clave que digitamos al principio del script para generar la clave

privada y el certificado digital con la llave publica. Cuando digitamos la clave el script nos

muestra los detalles del certificado digital que genero.

Ilustración 29

Page 16: Infraestructura PKI Con Certificados Digitales

16

La entidad certificadora la genero en la ruta: /etc/pki/CA y dentro de ese directorio genero en

certificado digital con la llave publica que se llama cacert.pem y en la carpeta prívate genero la

llave privada que se llama cakey.pem.

Se preguntara por que los genero con ese nombre. Los genero con ese nombre por que en el

archivo de configuración del openssl esta por defecto que se creen con ese nombre y en dichos

directorios.

Ilustración 30

Generar una petición para un sitio web

Vamos a generar una petición para nuestro sitio web, para ello vamos utilizar la herramienta

openssl.

Nos dirigimos a la ruta /etc/httpd, que es el directorio del servicio web. Utilizamos el

comando que se muestra en un recuadro azul de la imagen siguiente para generar la petición,

dentro del comando también generamos la llave privada del servidor.

httpd-key.pem: Es el nombre que le vamos a dar a la llave privada Del servidor. httpd-req.pem: Es el nombre que le vamos a dar a la petición para nuestro sitio web.

Ilustración 31

Luego llenamos los campos o los parámetros para generar la petición de nuestro sitio web.

Estos parámetros son: País, provincia o región, ciudad, nombre de la organización, nombre un

la unidad organizativa, nombre común (nombre para común del sitio web), email. Cuando

Page 17: Infraestructura PKI Con Certificados Digitales

17

llenemos estos parámetros damos enter hasta finalizar.Todo lo anterior se puede ver en la

siguiente imagen.

Ilustración 32

Verificamos que si se hallan generado tanto la petición como la llave privada del servidor con

el nombre que le especificamos en el comando que ejecutamos en el paso anterior.

Ilustración 33

Firmar la petición para el sitio web

Antes de realizar la firma de la petición debemos de dirigirnos a la ruta: /etc/pki/tls para

modificar el archivo de configuración del openssl. Dentro del directorio utilizamos un editor de

texto para modificar el archivo openssl.cnf.

Ilustración 34

Page 18: Infraestructura PKI Con Certificados Digitales

18

En la sentencia dir modificamos después del igual (=) /etc/pki/CA para especificar la ruta

donde se encuentra la CA, por defecto esta así: ../../CA y hay que modificarlo como se ha

dicho al principio del enunciado. También un error que hay por defecto en este archivo es en la

sentencia prívate_key donde le agregan el comentario de lo que significa la sentencia, el signo

# esta pegado a la ruta donde se especifica la ruta donde esta la llave privada de la CA

entonces hay que hacer que el signo no este pegado a la ruta de la llave privada de la CA.

Ilustración 35

Luego de realizar los cambios del paso anterior procedemos a firmar la petición de nuestro

sitio web con nuestra CA. Nos dirigimos a la ruta donde se encuentra la petición /etc/httpd y

utilizamos el comando que se muestra en el recuadro azul de la imagen siguiente. Cuando

ejecutamos el comando nos pide que digitemos la clave con la que generamos la CA o con la

que se genero la llave privada de la CA y luego nos muestra el certificado digital a firmar y al

fina no va a aparecer una pregunta que dice que si realmente queremos firma dicho certificdo

y le decimos que si (y).

httpd-cert.pem: Nombre que se va a generar para en certificado digital del servidor con la

firmar de la CA cuando se firme.

Httpd-req.pem: Nombre de la petición para el sitio web que se va a dirmar.

Page 19: Infraestructura PKI Con Certificados Digitales

19

Ilustración 36

Verificamos que el certificado si se genero con el nombre que especificamos en el paso

anterior, para ello desplegamos lo que hay dentro del directorio /etc/httpd con el comando ls.

Ilustración 37

Agregar el modulo de SSL al servidor web

Para utilizar el sitio web para sea un sitio seguro es necesario instalar el modulo de SSL.

Cuando se instala el modulo SSL vamos a configurar nuestro sitio web para que trabaje con el

certificado digital que solicitamos a nuestra CA.

Utilizamos el comando yum install mod_ssl para instalar el modulo.

Ilustración 38

Page 20: Infraestructura PKI Con Certificados Digitales

20

Luego nos dirigimos a la ruta /etc/httpd/conf.d para observar el archivo de configuración de

SSL.

Ilustración 39

Luego utilizamos un editor de texto para abrir el archivo de configuración ssl.conf

Ilustración 40

Dentro del archivo buscamos el parámetro SSLCertificateFile y especificamos la ruta donde

esta el certificado digital del servidor firmado por la CA y en el parámetro SSLCertificateKeyfile

especificamos la ruta donde se encuentra la llave privada del servidor cuando generamos la

petición. Se puede ver claramente en la imagen siguiente.

Ilustración 41

Reiniciamos el servicio httpd con el comando que se muestra en la imagen.

Ilustración 42

Page 21: Infraestructura PKI Con Certificados Digitales

21

Instalación del certificado digital de la CA en el navegador

Debemos de instalar el certificado digital de la CA en nuestro navegador para que cuando

ingresemos a nuestro sitio seguro no halla problema con el certificado digital del servidor ya

que si no tenemos el certificado digital de la CA que firmo el certificado digital para el sitio el

servidor cuando nos conectemos al sitio web nos saldrá un aviso donde dice que este sitio web

es un sitio inseguro y que no hay una autoridad certificadora que compruebe que el sitio si es

seguro.

Nos dirigimos a la ruta: /etc/pki/CA y copiamos el certificado digital de la CA, que se llama

cacert.pem a la ruta /etc/httpd.

Nota: Cuando le enviamos una petición a una entidad certificadora raíz de confianza esto nos

va valer y cuando la CA a la cual vamos a confiar cuando nos firme la petición para nuestro sitio

web nos envía ya sea por correo u otro medio el certificado digital del sitio web firmado y el

certificado digital de CA para instalarlo en el navegador.

Ilustración 43

Nos dirigimos al navegador y vamos a la opción editar > preferencias.

Ilustración 44

Page 22: Infraestructura PKI Con Certificados Digitales

22

Nos dirigimos a la pestaña Avanzado y seleccionamos la pestaña pequeña que dice Cifrado y

damos clic en ver certificados.

Ilustración 45

Nos dirigimos a la pestaña Autoridades y se puede observar las entidades certificadoras raíces

que vienen por defecto. En dicha pestaña vamos a importar el certificado de la CA que firmo

en certificado digital para el sitio web. Damos clic en importar.

Ilustración 46

Page 23: Infraestructura PKI Con Certificados Digitales

23

Buscamos la ruta donde esta el certificado de la CA, si se acuerdan nosotros hicimos una copia

del certificado de la CA en la ruta /etc/httpd en pasos anteriores. Entonces yo fui a buscar el

certificado en dicha ruta. Cuando encontré el certificado digital de la CA lo seleccione y di clic

en abrir.

Ilustración 47

Luego nos va a aparecer una ventana como la que se muestra en la imagen siguiente, donde

seleccionamos los propósitos en que queremos confiar con la autoridad certificadora que

vamos a instalar. Seleccionamos todos los propósitos de damos clic en aceptar.

Ilustración 48

Page 24: Infraestructura PKI Con Certificados Digitales

24

Luego de confiar en la CA nos dirigimos a la pestaña Autoridades y buscamos la autoridad que

acabas de instalar. En la imagen siguiente se observa que se ha instalado correctamente.

Ilustración 49

Abrimos al navegador para ingresar al sitio web seguro y poder verificar que el sitio si tiene un

CA de confianza que dice que el sitio es un sitio seguro. Cuando estamos en el sitio web en la

parte inferior derecha aparece el nombre del sitio y un candado y cuando le damos doble clic

en el candado veremos el certificado digital de servidor y que CA firmo dicho certificado digital

y información del sitio web.

Ilustración 50

Cuando le damos doble clic en el candado que se vio en el paso anterior veremos una ventana

como la que se muestra a continuación y veremos información el sitio y si le damos clic en ver

Page 25: Infraestructura PKI Con Certificados Digitales

25

certificado veremos el certificado digital del servidor. En el paso siguiente veremos que se ve

cuando damos clic en ver certificado.

Ilustración 51

Si damos clic en ver certificado del paso anterior veremos una ventana como se muestra a

continuación y veremos información del certificado, dicho información contiene: para quien se

emitió en certificado, quien emitió dicho certificado, fecha de validación, etc.

Ilustración 52

Page 26: Infraestructura PKI Con Certificados Digitales

26

Certificado digital firmado por otra CA distinta a la mía.

Para hacer que un CA distinta a la de nosotros nos firme un certificado digital para nuestro

sitio web. Tenemos que generar una petición para enviársela a la CA que nos va a firmar y

crear un certificado digital para nuestro sitio web. La petición se hace igual que las

ilustraciones 31 y 32, cuando se genere la petición se la enviamos a la CA, en nuestro caso yo

se la envié a través de un ftp que tenia la CA. Luego de que la CA la investigué y la firme dicha

CA nos enviara el certificado digital firmado para el sitio web y el certificado digital de la CA

para instalarlo en el navegador, dicha CA me envió dichos certificados digitales a través de un

FTP que yo tenia. Luego lo que hice fue descargarlos y modificar el archivo ssl.conf que se

encuentra en la ruta /etc/httpd/conf.d para modificar el parámetro SSLCertificateFile y

colocar el certificado digital que me firma la CA, reinicie el servicio y procedí a instalar el

certificado de la CA en el navegador.

Luego de realizar lo anterior ingrese a nuestro sitio web seguro y le di doble clic en el candado

que aparece en la parte inferior derecha para ver los detalles del certificado digital del

sitio web.

Ilustración 53

Luego de dar clic en el candado veremos una ventana como la que se muestra a continuación y

damos clic en ver certificado.

Ilustración 54

Page 27: Infraestructura PKI Con Certificados Digitales

27

Al darle clic en ver certificado veremos los detalles del certificado, y si observamos muy bien

podremos ver que la CA que nos firmo dicho certificado digital para el sitio web es distinta a la

de la ilustración 52.