Sei sulla pagina 1di 27

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

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

2
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

3
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

4
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:

5
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

6
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

7
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

8
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

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

10
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

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

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

13
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

14
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

15
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

16
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

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

18
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

19
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

20
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

21
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

22
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

23
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

24
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

25
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

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

27

Potrebbero piacerti anche