SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
qwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqw
ertyuiopasdfghjklzxcvbnmqwer
tyuiopasdfghjklzxcvbnmqwerty
              CERTIFICADO SSL
         (autogestionado) en Apache
uiopasdfghjklzxcvbnmqwertyui
                   UBUNTU

opasdfghjklzxcvbnmqwertyuiop
        2º ASIR   Seguridad   Trimestre 1   Débora García García


asdfghjklzxcvbnmqwertyuiopas
dfghjklzxcvbnmqwertyuiopasdf
ghjklzxcvbnmqwertyuiopasdfgh
jklzxcvbnmqwertyuiopasdfghjkl
zxcvbnmqwertyuiopasdfghjklzx
cvbnmqwertyuiopasdfghjklzxcv
bnmqwertyuiopasdfghjklzxcvbn
mqwertyuiopasdfghjklzxcvbnm
qwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqw
Seguridad                                                     Trimestre 1                                      Débora García García



Índice

Introducción ............................................................................................................................. 2
Primeros pasos ......................................................................................................................... 2
Creación de una Autoridad Certificadora................................................................................... 2
Creación del certificado digital .................................................................................................. 3
Generar la petición de certificado ............................................................................................. 3
Emitir el certificado ................................................................................................................... 4
Listado de ficheros generados en los pasos anteriores .............................................................. 4
Últimas configuraciones ............................................................................................................ 5
   Configurar el nuevo host virtual SSL ...................................................................................... 5
   Resolución DNS desde el archivo hosts .................................................................................. 7
Comprobar que funciona ......................................................................................................... 8
Como hacer para que no nos pida Apache la clave del certificado ........................................... 11
Creación de certificado para nuestros clientes ........................................................................ 12
   Creamos la clave privada y solicitud del certificado ............................................................. 12
   Firma del certificado con nuestra Autoridad Certificadora ................................................... 13
   Conversión del certificado ................................................................................................... 13
   Comprobando certificados con PHP .................................................................................... 17




                                                                                                                                          1
Seguridad                                  Trimestre 1                       Débora García García



Introducción
Hoy veremos como permitir el acceso a nuestra aplicación a aquellos usuarios que dispongan
de un certificado que previamente les habremos enviado mientras que si no lo tienen no
podrán acceder de ningún modo. Este método se puede combinar, además, con el tradicional
usuario/clave para dar mayor seguridad. Podremos incluso verificar que el nombre de usuario
que se intenta utilizar se corresponde con el certificado de usuario que le hemos enviado y no
intenta autentificarse con otro.

El método que vamos a ver se basa en certificados SSL. Se utilizan para asegurar la información
entre un cliente y el servidor y prevenir escuchas ya que la información viaja encriptado. Ésta
es su función y la hace aunque no esté firmado por una autoridad certificadora (CA) oficial o,
incluso, aunque esté caducado. Sigue asegurando las comunicaciones.

Una Autoridad Certificadora firma tu certificado SSL asegurando que os pertenece a ti y a tu
dominio. Cuando un cliente accede a tu dominio y descarga el certificado SSL, busca dentro de
sus certificados de CA‘s si hay alguno que lo haya firmado. Si lo encuentra, acepta tu
certificado y no ocurre nada especial, pero si no encuentra la CA lanza un aviso indicando que
no se reconoce la autoridad que lo firma. Esto no quiere decir que el certificado no sea válido,
lo único que ocurre es que no sabe quién lo firma. Esto significa, por tanto, que tú mismo
puedes ser tu propia autoridad certificadora y firmar tus certificados, funcionarán
perfectamente y cumplirán su cometido de asegurar las comunicaciones cliente/servidor.

El servidor puede requerir, además, otro certificado al cliente, de manera que ambos extremos
autentifiquen la comunicación. Esto es precisamente lo que vamos a hacer hoy en este
artículo.




Primeros pasos
Como siempre actualizaremos la lista de paquetes:

        Apt-get update

Instalamos:

        Apt-get install openssl

Esta será la herramienta con la que creemos certificados digitales de forma libre.


Creación de una Autoridad Certificadora
Para comenzar nos situamos en el directorio “/var/www” y creamos una carpeta “/CA” para
guardar los ficheros que iremos generando.

        mkdir /var/www/CA




                                                                                               2
Seguridad                                  Trimestre 1                       Débora García García


        Cd /var/www/CA

Vamos a crear la AC:

        openssl req –x509 –newkey rsa:2048 –keyout cakey.pem –days 3650 –out cacert.pem

Nos pide una password (en mi caso usuario). Y una serie de datos.

       X509  certificado.
       Rsa:2048  algritmo de encriptación de 2048 bytes.
       -keyout  donde se almacena la clave privada (cakey.pem).
       -out donde se almacena la clave pública (cacert.pem).
       -days 3650  La AC no expira hasta dentro de 10 años.




Creación del certificado digital
Podemos hacer tantos como queramos, los pasos son los mismos a partir de ahora.

Vamos a generar la clave privada del que será nuestro certificado digital:

        openssl genrsa –des3 –out serv-priv.pem –passout pass:usuario 2048

       -des3  algoritmo cifrado triple (se almacena en –out serv-priv.pem).
       -passout pass:  indicamos la passfrase para nuestra clave privada.




Generar la petición de certificado
Antes de hacer un certificado hay que hacer una petición donde se define el propietario del
certificado:

        openssl req –new –subj “/DC=shadowsland.com/OU=com/CN=shadowsland” –key
        serv-priv.pem –passin pass:usuario –out petic-certificado-serv.pem

       Req –new  petición con el parámetro –subj.
       Subj  indicamos a quien pertenece el certificado.
       Shadowsland  servidor.
       -key serv-priv.pem  usa la clave privada generada anteriormente.
       -passin pass:  password anterior.
       -out  le indicamos como salida que genere el fichero petc-certificado-serv.pem




                                                                                               3
Seguridad                                  Trimestre 1                       Débora García García



Emitir el certificado
Ya podemos emitir el certificado. Definimos las características de un certificado openssl en el
directorio “/etc/ssl/openssl.cnf”. Pero hay una forma más fácil de hacerlo, mediante la
creación de un fichero de configuración por nuestra cuenta:

        Nano /var/www/CA/config1.txt

Contiene:

        basicConstraints = critical,CA:FALSE
        extendedKeyUsage = serverAuth




Estas indicaciones son para que cumpla con el x509v3 y RFC3280.

El segunda párrafo viene a decir que el certificado servirá para un servidor web.

Ahora pasamos hacer el certificado:

        openssl x509 –CA cacert.pem –Cakey cakey.pem –req –in petic-certificado-serv.pem –
        days 3650 –extfile config1.txt –sha1 –Cacreateserial –out servidor-cert.pem

       X509  tipo de certificado.
       -CA  definida en el fichero cacert.pem.
       -Cakey  clave privada que usa en el fichero cakey.pem.
       -req –in  especificaciones que están en el fichero petic-certificado-serv.pem.
       -days 3650  con validez de 10 años.
       -extfile  indicamos que el certificado es para un servidor como el que está en
        config1.txt.
       -sha1  algoritmo cifrado.
       -Cacreateserial  enumera el certificado.
       -out donde genera el certificado, en cert.pem.




Listado de ficheros generados en los pasos anteriores




                                                                                               4
Seguridad                                   Trimestre 1                    Débora García García



Últimas configuraciones
Hay que copiar los fichero “servidor-cert.pem” y “serv-priv.pem” en “/etc/apache2/ssl”. Si no
tenemos el directorio “ssl” lo creamos.

        Mkdir /etc/apache2/ssl

        Cp /var/www/CA/ servidor-cert.pem        /etc/apache2/ssl

        Cp /var/www/CA/ serv-priv.pem            /etc/apache2/ssl




También tenemos que indicarle a Apache que escuche el puerto 443 (Secure Socket Layer),
modificando el fichero:

        Nano /etc/apache2/ports.conf

        Listen80

        Listen 443

Podemos observar que ya estaban activados por defecto:




Ahora hay que indicarle a Apache que soporte SSL instalando un módulo ssl:

        Apt-get install libapache-mod-ssl

        A2enmod ssl

Configurar el nuevo host virtual SSL
Nos dirigimos a la siguiente ruta para empezar a configurar el host:

                                                                                                5
Seguridad                                    Trimestre 1                  Débora García García


       Nano /etc/apache2/sites-availables/default




      SSLEngine on  indica que utilizamos certificados.
      SSLCertificateFile  de donde lee el certificado.
      SSLCertificateKeyFile  y la clave privada de este.

DocumentRoot es el lugar donde tenemos nuestra página. Seguramente no esté creado el sitio
pero hazlo de la siguiente manera:

       Mkdir /var/local/mipagina

Copia el “index” que viene por defecto en “www” para la prueba:

       Cp /var/www/index.htm               /var/local/mipagina




Finalmente después de guardar el fichero del host, hay que hacerle un enlace simbólico para
habilitarlo:

       A2ensite default

También desde “/etc/apache2/sites-availables/”:

       Ln –s ../sites-availables/default          default-000




                                                                                              6
Seguridad                                 Trimestre 1                   Débora García García


Por último para que se guarden los cambios tenemos que parar y arrancar apache:

       /etc/init.d/apache2 stop




       /etc/init.d/apache2 start

Observad que nos pide una password, esa es la del certificado.




Resolución DNS desde el archivo hosts
Para que pueda hacer la resolución sin tener un servicio DNS instalado, tendremos que
indicarle en este archivo que nos haga la resolución de la página segura que acabamos de
montar y será por tanto de manera local.




                                                                                          7
Seguridad                                 Trimestre 1                       Débora García García



Comprobar que funciona
Para ello nos dirigimos a nuestro navegado y en la barra de direcciones es muy importante que
pongamos el protocolo HTTPS:// que será el encargado de los certificados SSL, seguido de
nuestra ip, localhost o el dominio creado:




Desde entiendo los riesgos añadimos la excepción del certificado, y nos llevara a la página
principal (index.html)




Ahora para ver nuestro certificado vamos al menú del navegador:

Herramientas  información de la página




                                                                                              8
Seguridad   Trimestre 1   Débora García García




                                            9
Seguridad   Trimestre 1   Débora García García




                                           10
Seguridad                                     Trimestre 1                               Débora García García




Como hacer para que no nos pida Apache la clave del certificado

En resumen, se trata de quitar el cifrado a nuestra clave, de manera que Apache al arrancar,
pueda hacerlo del tirón.

Lo primero es encontrar el fichero de la clave a la que apunta nuestra configuración.

        “cd /etc/apache2/ssl/serv-priv.pem”

Copiamos    la   clave    para   tener   una      copia      de    ella    en    caso     de   necesitarla:




Ahora    quitamos    el    cifrado   a   la     clave       original,     de    la   siguiente     manera:




Es importantísimo proteger debidamente el acceso a esta clave, ya que no se encuentra
cifrada, por lo que un posible atacante podría, en caso de tener acceso a ella, hacerse pasar
por nosotros. Para ello, haremos que la clave solo sea accesible para el superusuario:




                                                                                                         11
Seguridad                                 Trimestre 1                      Débora García García


Ahora, si reiniciamos nuestro servidor Apache, veremos que ya no nos pide la clave y que
arranca como de costumbre. Si en algún momento queremos volver al estado anterior, con
modificar la configuración para que apunte a “serv-priv.copia” volveríamos al escenario
anterior.




Creación de certificado para nuestros clientes
Crearemos en la ruta “/etc/apache2/ssl”el archivo “cliente.cnf” que contiene:




Creamos la clave privada y solicitud del certificado




                                                                                            12
Seguridad                                  Trimestre 1                       Débora García García



Firma del certificado con nuestra Autoridad Certificadora


Hay algunos certificados y claves guardados en “/etc/apache2/ssl” para que no tengas
problemas cópialo todo a la ruta “/var/www/CA” que fue creada para contener todos estos
archivos, lo que que pasa que para que algunos funcionen y apache arranque, hace falta que
haya algunos en la carpeta “ssl” pero no todos, por eso lo dicho, así nos evitamos errores y
lios.




Vamos a ver el contenido de la carpeta “/etc/apache2/ssl”:




El contenido de “/var/www/CA”:




Conversión del certificado
El certificado ha de instalarse en el navegador y ser reconocido por este:




Ahora tenemos que añadir una línea al fichero que utilizamos de página por defecto
“/etc/apache2/sites-enabled/default-000”




                                                                                              13
Seguridad                                  Trimestre 1                       Débora García García




(Si la ruta que hemos añadido no existe, acuérdate de copiar ese fichero de /var/www/CA a
esa ruta).

Tenemos que añadir otra línea al archivo que es la que pide la verificación del usuario:




Reinicia apache, para que se guarden los cambios:

        “/etc/init.d/apache2 restart”

Comprobaremos el funcionamiento, para ello nos vamos al navegador:

Al intentar introducirnos en la web nos dará fallo, así que tendremos que ir a:

Editar  preferencias de Firefox  avanzado  ver certificados sus certificados  importar
 (cliente.p12 )



                                                                                              14
Seguridad   Trimestre 1   Débora García García




                                           15
Seguridad                                Trimestre 1   Débora García García




Actualiza de nuevo la página del navegador:




Y ya nos permite el acceso:




                                                                        16
Seguridad                                Trimestre 1                     Débora García García



Comprobando certificados con PHP


Vamos a “etc/apache2/sites-enabled/defautl-000”:




En “/var/www/” crea: “info.php”




Dentro escribiremos:




Copia el archivo en otra ruta de donde cogemos por defecto nuestra página:




Reinicia apache para comprobar que no te da ningún error.

Vamos al navegador:




                                                                                          17
Seguridad                               Trimestre 1             Débora García García




Aquí podemos observar todos los datos guardados en variables:




                                                                                 18

Más contenido relacionado

La actualidad más candente

Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)
Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)
Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)Max Morales
 
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORESGESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORESCarles Climent
 
Instalación y configuración de postfix y squirrel
Instalación y configuración de postfix y squirrelInstalación y configuración de postfix y squirrel
Instalación y configuración de postfix y squirrelRodrigo García Miranda
 
Manual de squid creado por juanextk
Manual de squid creado por juanextkManual de squid creado por juanextk
Manual de squid creado por juanextkjuanextk
 
Servidor SSH en Centos 6
Servidor SSH en Centos 6Servidor SSH en Centos 6
Servidor SSH en Centos 6AngiePalacios03
 
Aso t2 practica_crontab
Aso t2 practica_crontabAso t2 practica_crontab
Aso t2 practica_crontabgarciadebora
 
Tutorial linux centos configuraciones básicas
Tutorial linux centos configuraciones básicasTutorial linux centos configuraciones básicas
Tutorial linux centos configuraciones básicasUTP
 
IPTABLES y SQUID‏
IPTABLES y SQUID‏IPTABLES y SQUID‏
IPTABLES y SQUID‏ingpuma
 
Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)
Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)
Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)Max Morales
 
Instalación de Servidores GNU/Linux - parte 1
Instalación de Servidores GNU/Linux - parte 1Instalación de Servidores GNU/Linux - parte 1
Instalación de Servidores GNU/Linux - parte 1Max Morales
 
Seguridad de las Redes Informáticas
Seguridad de las Redes InformáticasSeguridad de las Redes Informáticas
Seguridad de las Redes InformáticasJACQUELINELUZARDO
 
Instalación de dns en centos
Instalación de dns en centos Instalación de dns en centos
Instalación de dns en centos Gerson Zapata
 

La actualidad más candente (20)

Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)
Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)
Instalación de Servidores GNU/Linux - PROXY SQUID (parte 3)
 
Instalación y configuración de Nagios
Instalación y configuración de NagiosInstalación y configuración de Nagios
Instalación y configuración de Nagios
 
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORESGESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
GESTIÓN DE ACCESO REMOTO Y MONITORIZACIÓN DE SERVIDORES
 
Manual FTP, SSH y OpenMedia Vault
Manual FTP, SSH y OpenMedia VaultManual FTP, SSH y OpenMedia Vault
Manual FTP, SSH y OpenMedia Vault
 
Servidor HTTP IIS
Servidor HTTP IISServidor HTTP IIS
Servidor HTTP IIS
 
Instalación y configuración de postfix y squirrel
Instalación y configuración de postfix y squirrelInstalación y configuración de postfix y squirrel
Instalación y configuración de postfix y squirrel
 
Instalación y configuración de servidor DNS
Instalación y configuración de servidor DNSInstalación y configuración de servidor DNS
Instalación y configuración de servidor DNS
 
Manual de squid creado por juanextk
Manual de squid creado por juanextkManual de squid creado por juanextk
Manual de squid creado por juanextk
 
Servidor SSH en Centos 6
Servidor SSH en Centos 6Servidor SSH en Centos 6
Servidor SSH en Centos 6
 
Squid
Squid Squid
Squid
 
Aso t2 practica_crontab
Aso t2 practica_crontabAso t2 practica_crontab
Aso t2 practica_crontab
 
PROXY CENTOS 6.5
PROXY CENTOS 6.5PROXY CENTOS 6.5
PROXY CENTOS 6.5
 
Tutorial linux centos configuraciones básicas
Tutorial linux centos configuraciones básicasTutorial linux centos configuraciones básicas
Tutorial linux centos configuraciones básicas
 
IPTABLES y SQUID‏
IPTABLES y SQUID‏IPTABLES y SQUID‏
IPTABLES y SQUID‏
 
Servidor DHCP en Centos 6.5
Servidor DHCP en Centos 6.5Servidor DHCP en Centos 6.5
Servidor DHCP en Centos 6.5
 
Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)
Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)
Instalación de Servidores GNU/Linux - APACHE, MySQL, PHP (parte 2)
 
Instalación de Servidores GNU/Linux - parte 1
Instalación de Servidores GNU/Linux - parte 1Instalación de Servidores GNU/Linux - parte 1
Instalación de Servidores GNU/Linux - parte 1
 
Seguridad de las Redes Informáticas
Seguridad de las Redes InformáticasSeguridad de las Redes Informáticas
Seguridad de las Redes Informáticas
 
Instalación y Configuración de LDAP
Instalación y Configuración de LDAPInstalación y Configuración de LDAP
Instalación y Configuración de LDAP
 
Instalación de dns en centos
Instalación de dns en centos Instalación de dns en centos
Instalación de dns en centos
 

Destacado

Red t3 practicas_iss
Red t3 practicas_issRed t3 practicas_iss
Red t3 practicas_issgarciadebora
 
Aso t1 practicas_ad
Aso t1 practicas_adAso t1 practicas_ad
Aso t1 practicas_adgarciadebora
 
Red t3_practica_autenticacion_apache
Red t3_practica_autenticacion_apacheRed t3_practica_autenticacion_apache
Red t3_practica_autenticacion_apachegarciadebora
 
Iso practica1 gavilan_fran_garciadebora
Iso practica1 gavilan_fran_garciadeboraIso practica1 gavilan_fran_garciadebora
Iso practica1 gavilan_fran_garciadeboragarciadebora
 
Práctica 3 iptables fran gavilan
Práctica 3 iptables fran gavilanPráctica 3 iptables fran gavilan
Práctica 3 iptables fran gavilanTerrafx9
 
Apli t1 practicas_apache
Apli t1 practicas_apacheApli t1 practicas_apache
Apli t1 practicas_apachegarciadebora
 
Pecha kucha
Pecha kuchaPecha kucha
Pecha kuchaTerrafx9
 
MOD_SSL apache 3 Jesus Carmona
MOD_SSL apache 3 Jesus Carmona MOD_SSL apache 3 Jesus Carmona
MOD_SSL apache 3 Jesus Carmona jsucarmona
 
Manuel rodriguez práctica 2 apache
Manuel rodriguez   práctica 2 apacheManuel rodriguez   práctica 2 apache
Manuel rodriguez práctica 2 apachecaoxman
 
Apache2 dia1
Apache2 dia1Apache2 dia1
Apache2 dia1lyonel_cc
 
Host Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPSHost Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPSRafa
 
Guia basica-securizacion-apache
Guia basica-securizacion-apacheGuia basica-securizacion-apache
Guia basica-securizacion-apacheERWIN AGUILAR
 

Destacado (20)

Red t3 practicas_iss
Red t3 practicas_issRed t3 practicas_iss
Red t3 practicas_iss
 
Aso t1 practicas_ad
Aso t1 practicas_adAso t1 practicas_ad
Aso t1 practicas_ad
 
Red t3_practica_autenticacion_apache
Red t3_practica_autenticacion_apacheRed t3_practica_autenticacion_apache
Red t3_practica_autenticacion_apache
 
Iso practica1 gavilan_fran_garciadebora
Iso practica1 gavilan_fran_garciadeboraIso practica1 gavilan_fran_garciadebora
Iso practica1 gavilan_fran_garciadebora
 
T12 garcia debora
T12 garcia deboraT12 garcia debora
T12 garcia debora
 
Práctica 3 iptables fran gavilan
Práctica 3 iptables fran gavilanPráctica 3 iptables fran gavilan
Práctica 3 iptables fran gavilan
 
Apli t1 practicas_apache
Apli t1 practicas_apacheApli t1 practicas_apache
Apli t1 practicas_apache
 
Pecha kucha
Pecha kuchaPecha kucha
Pecha kucha
 
Servidor ssl
Servidor sslServidor ssl
Servidor ssl
 
06practica servidorseguro
06practica servidorseguro06practica servidorseguro
06practica servidorseguro
 
SSL instalado... ¿estamos realmente seguros?
SSL instalado... ¿estamos realmente seguros?SSL instalado... ¿estamos realmente seguros?
SSL instalado... ¿estamos realmente seguros?
 
Servidor web apache
Servidor web apacheServidor web apache
Servidor web apache
 
22 apache http server
22  apache http server22  apache http server
22 apache http server
 
MOD_SSL apache 3 Jesus Carmona
MOD_SSL apache 3 Jesus Carmona MOD_SSL apache 3 Jesus Carmona
MOD_SSL apache 3 Jesus Carmona
 
Manuel rodriguez práctica 2 apache
Manuel rodriguez   práctica 2 apacheManuel rodriguez   práctica 2 apache
Manuel rodriguez práctica 2 apache
 
Apache2 dia1
Apache2 dia1Apache2 dia1
Apache2 dia1
 
Seguridad j1v2
Seguridad   j1v2Seguridad   j1v2
Seguridad j1v2
 
Host Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPSHost Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPS
 
Guia basica-securizacion-apache
Guia basica-securizacion-apacheGuia basica-securizacion-apache
Guia basica-securizacion-apache
 
Manual Apache 2,Awstats,Webalizer
Manual Apache 2,Awstats,WebalizerManual Apache 2,Awstats,Webalizer
Manual Apache 2,Awstats,Webalizer
 

Similar a Seg t2 practicas_certificado ssl

Configuracion https owcloud
Configuracion https owcloudConfiguracion https owcloud
Configuracion https owcloudsebastianrock
 
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiServicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiTelefónica
 
Certificados Cacert
Certificados CacertCertificados Cacert
Certificados CacertKevin MH
 
IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2
IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2
IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2camilaml
 
Servidor VPN en Linux - Bilal Jebari
Servidor VPN en Linux - Bilal JebariServidor VPN en Linux - Bilal Jebari
Servidor VPN en Linux - Bilal Jebaribilaljbr
 
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019Javier García Antón
 
Creación de certificados digitales con openssl CA local
Creación de certificados digitales con openssl CA localCreación de certificados digitales con openssl CA local
Creación de certificados digitales con openssl CA localHenry Cristian Cuesta Vega
 
Apache: Servidor Web Seguro (HTTPS)
Apache: Servidor Web Seguro (HTTPS)Apache: Servidor Web Seguro (HTTPS)
Apache: Servidor Web Seguro (HTTPS)pablozacrosuarez
 
Hack like a pro with custom VPS - Najava Negra 2019
Hack like a pro with custom VPS - Najava Negra 2019Hack like a pro with custom VPS - Najava Negra 2019
Hack like a pro with custom VPS - Najava Negra 2019Alejandro Quesada
 
INSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSLINSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSLEdson Ortega
 
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPSAcceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPSTerrafx9
 
Manual de Encriptacion con TLS
Manual de Encriptacion con TLSManual de Encriptacion con TLS
Manual de Encriptacion con TLSK-milo Rivera
 

Similar a Seg t2 practicas_certificado ssl (20)

Configuracion https owcloud
Configuracion https owcloudConfiguracion https owcloud
Configuracion https owcloud
 
Instalacion certificados-ssl
Instalacion certificados-sslInstalacion certificados-ssl
Instalacion certificados-ssl
 
openssl
opensslopenssl
openssl
 
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiServicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
 
Openssl
Openssl Openssl
Openssl
 
Certificados Cacert
Certificados CacertCertificados Cacert
Certificados Cacert
 
IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2
IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2
IMPLEMENTACIÓN DE OPENVPN EN RED HAT 6.2
 
Openvp non redhat
Openvp non redhatOpenvp non redhat
Openvp non redhat
 
Openvp non redhat
Openvp non redhatOpenvp non redhat
Openvp non redhat
 
Configuracion vpn
Configuracion  vpnConfiguracion  vpn
Configuracion vpn
 
Configuraion vpn
Configuraion  vpnConfiguraion  vpn
Configuraion vpn
 
Servidor VPN en Linux - Bilal Jebari
Servidor VPN en Linux - Bilal JebariServidor VPN en Linux - Bilal Jebari
Servidor VPN en Linux - Bilal Jebari
 
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
 
Creación de certificados digitales con openssl CA local
Creación de certificados digitales con openssl CA localCreación de certificados digitales con openssl CA local
Creación de certificados digitales con openssl CA local
 
Apache: Servidor Web Seguro (HTTPS)
Apache: Servidor Web Seguro (HTTPS)Apache: Servidor Web Seguro (HTTPS)
Apache: Servidor Web Seguro (HTTPS)
 
Hack like a pro with custom VPS - Najava Negra 2019
Hack like a pro with custom VPS - Najava Negra 2019Hack like a pro with custom VPS - Najava Negra 2019
Hack like a pro with custom VPS - Najava Negra 2019
 
INSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSLINSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSL
 
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPSAcceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
 
Manual de Encriptacion con TLS
Manual de Encriptacion con TLSManual de Encriptacion con TLS
Manual de Encriptacion con TLS
 
Ft py ssh_fco_javier_mejías_fernández
Ft py ssh_fco_javier_mejías_fernándezFt py ssh_fco_javier_mejías_fernández
Ft py ssh_fco_javier_mejías_fernández
 

Más de garciadebora

Sg t2 practicas_tripwire
Sg t2 practicas_tripwireSg t2 practicas_tripwire
Sg t2 practicas_tripwiregarciadebora
 
Sg t2 practicas_snort
Sg t2 practicas_snortSg t2 practicas_snort
Sg t2 practicas_snortgarciadebora
 
Sg t2 practicas_eliminar_malware
Sg t2 practicas_eliminar_malwareSg t2 practicas_eliminar_malware
Sg t2 practicas_eliminar_malwaregarciadebora
 
Sg t1 practicas_linux
Sg t1 practicas_linuxSg t1 practicas_linux
Sg t1 practicas_linuxgarciadebora
 
Sg t1 practica-copia_seguridadwindows2003
Sg t1 practica-copia_seguridadwindows2003Sg t1 practica-copia_seguridadwindows2003
Sg t1 practica-copia_seguridadwindows2003garciadebora
 
Sg t1 practica_e_criptfs
Sg t1 practica_e_criptfsSg t1 practica_e_criptfs
Sg t1 practica_e_criptfsgarciadebora
 
Sg t1 practica_copia_seguridadlinux
Sg t1 practica_copia_seguridadlinuxSg t1 practica_copia_seguridadlinux
Sg t1 practica_copia_seguridadlinuxgarciadebora
 
Sg t1 practica_analisis_forense-2
Sg t1 practica_analisis_forense-2Sg t1 practica_analisis_forense-2
Sg t1 practica_analisis_forense-2garciadebora
 
Red t3 practica2_apacheopenldap
Red t3 practica2_apacheopenldapRed t3 practica2_apacheopenldap
Red t3 practica2_apacheopenldapgarciadebora
 
Red t3 practica1_apachecms
Red t3 practica1_apachecmsRed t3 practica1_apachecms
Red t3 practica1_apachecmsgarciadebora
 
Red t1 practicas_dns
Red t1 practicas_dnsRed t1 practicas_dns
Red t1 practicas_dnsgarciadebora
 
Red t1_practica_dns2
Red  t1_practica_dns2Red  t1_practica_dns2
Red t1_practica_dns2garciadebora
 
Los servidores wamp
Los servidores wampLos servidores wamp
Los servidores wampgarciadebora
 
Aso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticasAso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticasgarciadebora
 
Fh trbj chipset_garciad_escrichef
Fh trbj chipset_garciad_escrichefFh trbj chipset_garciad_escrichef
Fh trbj chipset_garciad_escrichefgarciadebora
 

Más de garciadebora (20)

Pecha kucha
Pecha kuchaPecha kucha
Pecha kucha
 
Sg t2 practicas_tripwire
Sg t2 practicas_tripwireSg t2 practicas_tripwire
Sg t2 practicas_tripwire
 
Sg t2 practicas_snort
Sg t2 practicas_snortSg t2 practicas_snort
Sg t2 practicas_snort
 
Sg t2 practicas_eliminar_malware
Sg t2 practicas_eliminar_malwareSg t2 practicas_eliminar_malware
Sg t2 practicas_eliminar_malware
 
Sg t1 practicas_linux
Sg t1 practicas_linuxSg t1 practicas_linux
Sg t1 practicas_linux
 
Sg t1 practica-copia_seguridadwindows2003
Sg t1 practica-copia_seguridadwindows2003Sg t1 practica-copia_seguridadwindows2003
Sg t1 practica-copia_seguridadwindows2003
 
Sg t1 practica_e_criptfs
Sg t1 practica_e_criptfsSg t1 practica_e_criptfs
Sg t1 practica_e_criptfs
 
Sg t1 practica_copia_seguridadlinux
Sg t1 practica_copia_seguridadlinuxSg t1 practica_copia_seguridadlinux
Sg t1 practica_copia_seguridadlinux
 
Sg t1 practica_analisis_forense-2
Sg t1 practica_analisis_forense-2Sg t1 practica_analisis_forense-2
Sg t1 practica_analisis_forense-2
 
Red t3 practica2_apacheopenldap
Red t3 practica2_apacheopenldapRed t3 practica2_apacheopenldap
Red t3 practica2_apacheopenldap
 
Red t3 practica1_apachecms
Red t3 practica1_apachecmsRed t3 practica1_apachecms
Red t3 practica1_apachecms
 
Red t2 dhcp
Red t2 dhcpRed t2 dhcp
Red t2 dhcp
 
Red t1 practicas_dns
Red t1 practicas_dnsRed t1 practicas_dns
Red t1 practicas_dns
 
Red t1_practica_dns2
Red  t1_practica_dns2Red  t1_practica_dns2
Red t1_practica_dns2
 
Bd practica1.11
Bd practica1.11Bd practica1.11
Bd practica1.11
 
Bd practica 1.10
Bd practica 1.10Bd practica 1.10
Bd practica 1.10
 
Los servidores wamp
Los servidores wampLos servidores wamp
Los servidores wamp
 
Apli t1 ejr
Apli t1 ejrApli t1 ejr
Apli t1 ejr
 
Aso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticasAso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticas
 
Fh trbj chipset_garciad_escrichef
Fh trbj chipset_garciad_escrichefFh trbj chipset_garciad_escrichef
Fh trbj chipset_garciad_escrichef
 

Seg t2 practicas_certificado ssl

  • 1. qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw ertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwerty CERTIFICADO SSL (autogestionado) en Apache uiopasdfghjklzxcvbnmqwertyui UBUNTU opasdfghjklzxcvbnmqwertyuiop 2º ASIR Seguridad Trimestre 1 Débora García García asdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjkl zxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcv bnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnm qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw
  • 2. Seguridad Trimestre 1 Débora García García Índice Introducción ............................................................................................................................. 2 Primeros pasos ......................................................................................................................... 2 Creación de una Autoridad Certificadora................................................................................... 2 Creación del certificado digital .................................................................................................. 3 Generar la petición de certificado ............................................................................................. 3 Emitir el certificado ................................................................................................................... 4 Listado de ficheros generados en los pasos anteriores .............................................................. 4 Últimas configuraciones ............................................................................................................ 5 Configurar el nuevo host virtual SSL ...................................................................................... 5 Resolución DNS desde el archivo hosts .................................................................................. 7 Comprobar que funciona ......................................................................................................... 8 Como hacer para que no nos pida Apache la clave del certificado ........................................... 11 Creación de certificado para nuestros clientes ........................................................................ 12 Creamos la clave privada y solicitud del certificado ............................................................. 12 Firma del certificado con nuestra Autoridad Certificadora ................................................... 13 Conversión del certificado ................................................................................................... 13 Comprobando certificados con PHP .................................................................................... 17 1
  • 3. Seguridad Trimestre 1 Débora García García Introducción Hoy veremos como permitir el acceso a nuestra aplicación a aquellos usuarios que dispongan de un certificado que previamente les habremos enviado mientras que si no lo tienen no podrán acceder de ningún modo. Este método se puede combinar, además, con el tradicional usuario/clave para dar mayor seguridad. Podremos incluso verificar que el nombre de usuario que se intenta utilizar se corresponde con el certificado de usuario que le hemos enviado y no intenta autentificarse con otro. El método que vamos a ver se basa en certificados SSL. Se utilizan para asegurar la información entre un cliente y el servidor y prevenir escuchas ya que la información viaja encriptado. Ésta es su función y la hace aunque no esté firmado por una autoridad certificadora (CA) oficial o, incluso, aunque esté caducado. Sigue asegurando las comunicaciones. Una Autoridad Certificadora firma tu certificado SSL asegurando que os pertenece a ti y a tu dominio. Cuando un cliente accede a tu dominio y descarga el certificado SSL, busca dentro de sus certificados de CA‘s si hay alguno que lo haya firmado. Si lo encuentra, acepta tu certificado y no ocurre nada especial, pero si no encuentra la CA lanza un aviso indicando que no se reconoce la autoridad que lo firma. Esto no quiere decir que el certificado no sea válido, lo único que ocurre es que no sabe quién lo firma. Esto significa, por tanto, que tú mismo puedes ser tu propia autoridad certificadora y firmar tus certificados, funcionarán perfectamente y cumplirán su cometido de asegurar las comunicaciones cliente/servidor. El servidor puede requerir, además, otro certificado al cliente, de manera que ambos extremos autentifiquen la comunicación. Esto es precisamente lo que vamos a hacer hoy en este artículo. Primeros pasos Como siempre actualizaremos la lista de paquetes: Apt-get update Instalamos: Apt-get install openssl Esta será la herramienta con la que creemos certificados digitales de forma libre. Creación de una Autoridad Certificadora Para comenzar nos situamos en el directorio “/var/www” y creamos una carpeta “/CA” para guardar los ficheros que iremos generando. mkdir /var/www/CA 2
  • 4. Seguridad Trimestre 1 Débora García García Cd /var/www/CA Vamos a crear la AC: openssl req –x509 –newkey rsa:2048 –keyout cakey.pem –days 3650 –out cacert.pem Nos pide una password (en mi caso usuario). Y una serie de datos.  X509  certificado.  Rsa:2048  algritmo de encriptación de 2048 bytes.  -keyout  donde se almacena la clave privada (cakey.pem).  -out donde se almacena la clave pública (cacert.pem).  -days 3650  La AC no expira hasta dentro de 10 años. Creación del certificado digital Podemos hacer tantos como queramos, los pasos son los mismos a partir de ahora. Vamos a generar la clave privada del que será nuestro certificado digital: openssl genrsa –des3 –out serv-priv.pem –passout pass:usuario 2048  -des3  algoritmo cifrado triple (se almacena en –out serv-priv.pem).  -passout pass:  indicamos la passfrase para nuestra clave privada. Generar la petición de certificado Antes de hacer un certificado hay que hacer una petición donde se define el propietario del certificado: openssl req –new –subj “/DC=shadowsland.com/OU=com/CN=shadowsland” –key serv-priv.pem –passin pass:usuario –out petic-certificado-serv.pem  Req –new  petición con el parámetro –subj.  Subj  indicamos a quien pertenece el certificado.  Shadowsland  servidor.  -key serv-priv.pem  usa la clave privada generada anteriormente.  -passin pass:  password anterior.  -out  le indicamos como salida que genere el fichero petc-certificado-serv.pem 3
  • 5. Seguridad Trimestre 1 Débora García García Emitir el certificado Ya podemos emitir el certificado. Definimos las características de un certificado openssl en el directorio “/etc/ssl/openssl.cnf”. Pero hay una forma más fácil de hacerlo, mediante la creación de un fichero de configuración por nuestra cuenta: Nano /var/www/CA/config1.txt Contiene: basicConstraints = critical,CA:FALSE extendedKeyUsage = serverAuth Estas indicaciones son para que cumpla con el x509v3 y RFC3280. El segunda párrafo viene a decir que el certificado servirá para un servidor web. Ahora pasamos hacer el certificado: openssl x509 –CA cacert.pem –Cakey cakey.pem –req –in petic-certificado-serv.pem – days 3650 –extfile config1.txt –sha1 –Cacreateserial –out servidor-cert.pem  X509  tipo de certificado.  -CA  definida en el fichero cacert.pem.  -Cakey  clave privada que usa en el fichero cakey.pem.  -req –in  especificaciones que están en el fichero petic-certificado-serv.pem.  -days 3650  con validez de 10 años.  -extfile  indicamos que el certificado es para un servidor como el que está en config1.txt.  -sha1  algoritmo cifrado.  -Cacreateserial  enumera el certificado.  -out donde genera el certificado, en cert.pem. Listado de ficheros generados en los pasos anteriores 4
  • 6. Seguridad Trimestre 1 Débora García García Últimas configuraciones Hay que copiar los fichero “servidor-cert.pem” y “serv-priv.pem” en “/etc/apache2/ssl”. Si no tenemos el directorio “ssl” lo creamos. Mkdir /etc/apache2/ssl Cp /var/www/CA/ servidor-cert.pem /etc/apache2/ssl Cp /var/www/CA/ serv-priv.pem /etc/apache2/ssl También tenemos que indicarle a Apache que escuche el puerto 443 (Secure Socket Layer), modificando el fichero: Nano /etc/apache2/ports.conf Listen80 Listen 443 Podemos observar que ya estaban activados por defecto: Ahora hay que indicarle a Apache que soporte SSL instalando un módulo ssl: Apt-get install libapache-mod-ssl A2enmod ssl Configurar el nuevo host virtual SSL Nos dirigimos a la siguiente ruta para empezar a configurar el host: 5
  • 7. Seguridad Trimestre 1 Débora García García Nano /etc/apache2/sites-availables/default  SSLEngine on  indica que utilizamos certificados.  SSLCertificateFile  de donde lee el certificado.  SSLCertificateKeyFile  y la clave privada de este. DocumentRoot es el lugar donde tenemos nuestra página. Seguramente no esté creado el sitio pero hazlo de la siguiente manera: Mkdir /var/local/mipagina Copia el “index” que viene por defecto en “www” para la prueba: Cp /var/www/index.htm /var/local/mipagina Finalmente después de guardar el fichero del host, hay que hacerle un enlace simbólico para habilitarlo: A2ensite default También desde “/etc/apache2/sites-availables/”: Ln –s ../sites-availables/default default-000 6
  • 8. Seguridad Trimestre 1 Débora García García Por último para que se guarden los cambios tenemos que parar y arrancar apache: /etc/init.d/apache2 stop /etc/init.d/apache2 start Observad que nos pide una password, esa es la del certificado. Resolución DNS desde el archivo hosts Para que pueda hacer la resolución sin tener un servicio DNS instalado, tendremos que indicarle en este archivo que nos haga la resolución de la página segura que acabamos de montar y será por tanto de manera local. 7
  • 9. Seguridad Trimestre 1 Débora García García Comprobar que funciona Para ello nos dirigimos a nuestro navegado y en la barra de direcciones es muy importante que pongamos el protocolo HTTPS:// que será el encargado de los certificados SSL, seguido de nuestra ip, localhost o el dominio creado: Desde entiendo los riesgos añadimos la excepción del certificado, y nos llevara a la página principal (index.html) Ahora para ver nuestro certificado vamos al menú del navegador: Herramientas  información de la página 8
  • 10. Seguridad Trimestre 1 Débora García García 9
  • 11. Seguridad Trimestre 1 Débora García García 10
  • 12. Seguridad Trimestre 1 Débora García García Como hacer para que no nos pida Apache la clave del certificado En resumen, se trata de quitar el cifrado a nuestra clave, de manera que Apache al arrancar, pueda hacerlo del tirón. Lo primero es encontrar el fichero de la clave a la que apunta nuestra configuración. “cd /etc/apache2/ssl/serv-priv.pem” Copiamos la clave para tener una copia de ella en caso de necesitarla: Ahora quitamos el cifrado a la clave original, de la siguiente manera: Es importantísimo proteger debidamente el acceso a esta clave, ya que no se encuentra cifrada, por lo que un posible atacante podría, en caso de tener acceso a ella, hacerse pasar por nosotros. Para ello, haremos que la clave solo sea accesible para el superusuario: 11
  • 13. Seguridad Trimestre 1 Débora García García Ahora, si reiniciamos nuestro servidor Apache, veremos que ya no nos pide la clave y que arranca como de costumbre. Si en algún momento queremos volver al estado anterior, con modificar la configuración para que apunte a “serv-priv.copia” volveríamos al escenario anterior. Creación de certificado para nuestros clientes Crearemos en la ruta “/etc/apache2/ssl”el archivo “cliente.cnf” que contiene: Creamos la clave privada y solicitud del certificado 12
  • 14. Seguridad Trimestre 1 Débora García García Firma del certificado con nuestra Autoridad Certificadora Hay algunos certificados y claves guardados en “/etc/apache2/ssl” para que no tengas problemas cópialo todo a la ruta “/var/www/CA” que fue creada para contener todos estos archivos, lo que que pasa que para que algunos funcionen y apache arranque, hace falta que haya algunos en la carpeta “ssl” pero no todos, por eso lo dicho, así nos evitamos errores y lios. Vamos a ver el contenido de la carpeta “/etc/apache2/ssl”: El contenido de “/var/www/CA”: Conversión del certificado El certificado ha de instalarse en el navegador y ser reconocido por este: Ahora tenemos que añadir una línea al fichero que utilizamos de página por defecto “/etc/apache2/sites-enabled/default-000” 13
  • 15. Seguridad Trimestre 1 Débora García García (Si la ruta que hemos añadido no existe, acuérdate de copiar ese fichero de /var/www/CA a esa ruta). Tenemos que añadir otra línea al archivo que es la que pide la verificación del usuario: Reinicia apache, para que se guarden los cambios: “/etc/init.d/apache2 restart” Comprobaremos el funcionamiento, para ello nos vamos al navegador: Al intentar introducirnos en la web nos dará fallo, así que tendremos que ir a: Editar  preferencias de Firefox  avanzado  ver certificados sus certificados  importar  (cliente.p12 ) 14
  • 16. Seguridad Trimestre 1 Débora García García 15
  • 17. Seguridad Trimestre 1 Débora García García Actualiza de nuevo la página del navegador: Y ya nos permite el acceso: 16
  • 18. Seguridad Trimestre 1 Débora García García Comprobando certificados con PHP Vamos a “etc/apache2/sites-enabled/defautl-000”: En “/var/www/” crea: “info.php” Dentro escribiremos: Copia el archivo en otra ruta de donde cogemos por defecto nuestra página: Reinicia apache para comprobar que no te da ningún error. Vamos al navegador: 17
  • 19. Seguridad Trimestre 1 Débora García García Aquí podemos observar todos los datos guardados en variables: 18