Seg t2 practicas_certificado ssl

  • 413 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
413
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
16
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwerty CERTIFICADO SSL (autogestionado) en Apacheuiopasdfghjklzxcvbnmqwertyui UBUNTUopasdfghjklzxcvbnmqwertyuiop 2º ASIR Seguridad Trimestre 1 Débora García Garcíaasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqw
  • 2. Seguridad Trimestre 1 Débora García GarcíaÍndiceIntroducción ............................................................................................................................. 2Primeros pasos ......................................................................................................................... 2Creación de una Autoridad Certificadora................................................................................... 2Creación del certificado digital .................................................................................................. 3Generar la petición de certificado ............................................................................................. 3Emitir el certificado ................................................................................................................... 4Listado 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 .................................................................................. 7Comprobar que funciona ......................................................................................................... 8Como hacer para que no nos pida Apache la clave del certificado ........................................... 11Creació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íaIntroducciónHoy veremos como permitir el acceso a nuestra aplicación a aquellos usuarios que dispongande un certificado que previamente les habremos enviado mientras que si no lo tienen nopodrán acceder de ningún modo. Este método se puede combinar, además, con el tradicionalusuario/clave para dar mayor seguridad. Podremos incluso verificar que el nombre de usuarioque se intenta utilizar se corresponde con el certificado de usuario que le hemos enviado y nointenta autentificarse con otro.El método que vamos a ver se basa en certificados SSL. Se utilizan para asegurar la informaciónentre un cliente y el servidor y prevenir escuchas ya que la información viaja encriptado. Éstaes 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 tudominio. Cuando un cliente accede a tu dominio y descarga el certificado SSL, busca dentro desus certificados de CA‘s si hay alguno que lo haya firmado. Si lo encuentra, acepta tucertificado y no ocurre nada especial, pero si no encuentra la CA lanza un aviso indicando queno 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ú mismopuedes ser tu propia autoridad certificadora y firmar tus certificados, funcionaránperfectamente 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 extremosautentifiquen la comunicación. Esto es precisamente lo que vamos a hacer hoy en esteartículo.Primeros pasosComo siempre actualizaremos la lista de paquetes: Apt-get updateInstalamos: Apt-get install opensslEsta será la herramienta con la que creemos certificados digitales de forma libre.Creación de una Autoridad CertificadoraPara comenzar nos situamos en el directorio “/var/www” y creamos una carpeta “/CA” paraguardar los ficheros que iremos generando. mkdir /var/www/CA 2
  • 4. Seguridad Trimestre 1 Débora García García Cd /var/www/CAVamos a crear la AC: openssl req –x509 –newkey rsa:2048 –keyout cakey.pem –days 3650 –out cacert.pemNos 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 digitalPodemos 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 certificadoAntes de hacer un certificado hay que hacer una petición donde se define el propietario delcertificado: 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íaEmitir el certificadoYa podemos emitir el certificado. Definimos las características de un certificado openssl en eldirectorio “/etc/ssl/openssl.cnf”. Pero hay una forma más fácil de hacerlo, mediante lacreación de un fichero de configuración por nuestra cuenta: Nano /var/www/CA/config1.txtContiene: basicConstraints = critical,CA:FALSE extendedKeyUsage = serverAuthEstas 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 configuracionesHay que copiar los fichero “servidor-cert.pem” y “serv-priv.pem” en “/etc/apache2/ssl”. Si notenemos 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/sslTambién tenemos que indicarle a Apache que escuche el puerto 443 (Secure Socket Layer),modificando el fichero: Nano /etc/apache2/ports.conf Listen80 Listen 443Podemos 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 sslConfigurar el nuevo host virtual SSLNos 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 sitiopero hazlo de la siguiente manera: Mkdir /var/local/mipaginaCopia el “index” que viene por defecto en “www” para la prueba: Cp /var/www/index.htm /var/local/mipaginaFinalmente después de guardar el fichero del host, hay que hacerle un enlace simbólico parahabilitarlo: A2ensite defaultTambién desde “/etc/apache2/sites-availables/”: Ln –s ../sites-availables/default default-000 6
  • 8. Seguridad Trimestre 1 Débora García GarcíaPor último para que se guarden los cambios tenemos que parar y arrancar apache: /etc/init.d/apache2 stop /etc/init.d/apache2 startObservad que nos pide una password, esa es la del certificado.Resolución DNS desde el archivo hostsPara que pueda hacer la resolución sin tener un servicio DNS instalado, tendremos queindicarle en este archivo que nos haga la resolución de la página segura que acabamos demontar y será por tanto de manera local. 7
  • 9. Seguridad Trimestre 1 Débora García GarcíaComprobar que funcionaPara ello nos dirigimos a nuestro navegado y en la barra de direcciones es muy importante quepongamos el protocolo HTTPS:// que será el encargado de los certificados SSL, seguido denuestra ip, localhost o el dominio creado:Desde entiendo los riesgos añadimos la excepción del certificado, y nos llevara a la páginaprincipal (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íaComo hacer para que no nos pida Apache la clave del certificadoEn 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 encuentracifrada, por lo que un posible atacante podría, en caso de tener acceso a ella, hacerse pasarpor nosotros. Para ello, haremos que la clave solo sea accesible para el superusuario: 11
  • 13. Seguridad Trimestre 1 Débora García GarcíaAhora, si reiniciamos nuestro servidor Apache, veremos que ya no nos pide la clave y quearranca como de costumbre. Si en algún momento queremos volver al estado anterior, conmodificar la configuración para que apunte a “serv-priv.copia” volveríamos al escenarioanterior.Creación de certificado para nuestros clientesCrearemos 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íaFirma del certificado con nuestra Autoridad CertificadoraHay algunos certificados y claves guardados en “/etc/apache2/ssl” para que no tengasproblemas cópialo todo a la ruta “/var/www/CA” que fue creada para contener todos estosarchivos, lo que que pasa que para que algunos funcionen y apache arranque, hace falta quehaya algunos en la carpeta “ssl” pero no todos, por eso lo dicho, así nos evitamos errores ylios.Vamos a ver el contenido de la carpeta “/etc/apache2/ssl”:El contenido de “/var/www/CA”:Conversión del certificadoEl 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 aesa 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íaActualiza de nuevo la página del navegador:Y ya nos permite el acceso: 16
  • 18. Seguridad Trimestre 1 Débora García GarcíaComprobando certificados con PHPVamos 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íaAquí podemos observar todos los datos guardados en variables: 18