[PyVigo] Reactivación de HPKP en python-vigo.es

peibolvigo at gmail.com peibolvigo at gmail.com
Thu Feb 18 17:28:58 CET 2016


Muy interesante Luis, y con explicación para no iniciados... que más se puede pedir! 

Muchas gracias por la info :)

El 18 de febrero de 2016 14:35:40 CET, "Luis González Fernández" <luisgf at luisgf.es> escribió:
>Hola a todos:
>
>Con la migración de los certificados que opero hacia let's encrypt han
>aparecido una serie de inconvenientes que degradan la configuración SSL
>y por consiguiente la seguridad de la transmisión.
>
>Todos mis sistemas emitian las cabeceras necesarias para soportar HSTS
>(HTTP Strict Transport Security) y HPKP (Public Key Pinning Extension
>for HTTP).
>
>Para los neófitos la siguiente explicación rápida:
>HSTS: Es un mecanismo por el cual el servidor web le indica a un
>navegador que las peticiones que realicen a un determinado sitio, deben
>ir siempre a través de HTTPS.
>
>HPKP: Es un mecanismo que informa al navegador de los certificados
>autorizados que puede ver a la hora de conectarse a un sitio. Si vé
>otros certificados, podriamos ser victimas de un ataque tipo
>Man-in-the-middle, asi que impedirá tal conexion.
>
>
>Con los certificados tradicionales, esto no suponia demasiado problema
>ya que su duración es elevada (1 o 2 años), lo cual me permitia generar
>pins con una duración un poco inferior a la caducidad de los
>certificados y darme un margn de maniobra amplio para renovarlos y
>generar los nuevos pins. 
>
>El problema surje con let's encrypt (servicio fantástico!!!) ya que la
>duración de sus certificados actualmente es de 3 meses y en un futuro
>podría incluso reducirse.
>
>Asi pues, para lidiar con la problematica he desarrollado un pequeño
>programa en Perl, (vaaaale es broma), en Python 3.5 que genera los pins
>HPKP de forma automática. El siguiente programa se ejecutará justo
>despues de la renovación del certificado y generará un PIN con una
>duración no superior a la del certificado con respecto a la fecha
>actual. Esto impedirá crear un pin que tenga validez una vez el
>certificado haya expirado.
>
>La idea detrás de esto es que este programa se ejecute como hook o
>plugin del cliente let's encrypt, no obstante y mientras esté en
>periodo de pruebas, vivirá como un programa independiente.
>
>
>Configuración de Apache:
><IfModule mpm_itk_module>
>        AssignUserID pyvigo pyvigo
></IfModule>
>
><IfModule mod_ssl.c>
>    SSLUseStapling on
>    SSLStaplingCache shmcb:/tmp/ocsp_stapling(512000)
>
>    <VirtualHost *:443>
>        ServerName www.python-vigo.es
>        ServerAlias python-vigo.es
>        DocumentRoot /datos/webs/python-vigo
>        ErrorLog ${APACHE_LOG_DIR}/www.python-vigo.es_error.log
>     CustomLog ${APACHE_LOG_DIR}/www.python-vigo.es_access.log combined
>
>        # Configuracion SSL
>        SSLEngine on
>        SSLCompression Off
>        SSLProtocol all -SSLv2 -SSLv3
>        SSLHonorCipherOrder On
>SSLCipherSuite
>EECDH+AES:ECDHE+ECDSA:ECDHE+RSA:ECDHE+AES:DHE+RSA:ECDH+AES:DHE+AES:EDH+AES:-SHA1:DHE+AES:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5
>       SSLCertificateFile /etc/letsencrypt/live/luisgf.es-0001/cert.pem
> SSLCertificateKeyFile /etc/letsencrypt/live/luisgf.es-0001/privkey.pem
> SSLCertificateChainFile /etc/letsencrypt/live/luisgf.es-0001/chain.pem
>
>        # Activamos HSTS
>Header always set Strict-Transport-Security "max-age=16070400;
>includeSubDomains"
>        # Activamos HPKP leyendo la directiva generada por hpkp-python
>       Include /etc/apache2/conf-available/hpkp-pin_python-vigo.es.conf
>
># http://stackoverflow.com/questions/17092154/x-frame-options-on-apache
>        Header set X-Frame-Options SAMEORIGIN
>#
>http://stackoverflow.com/questions/9090577/what-is-the-http-header-x-xss-protection
>        Header set X-XSS-Protection "1; mode=block"
>    </VirtualHost>
></IfModule>
>
>Genero el pin con:
>./hpkp.py -f /etc/letsencrypt/live/www.python-vigo.es/cert.pem -u
>http://www.luisgf.es/hpkp_report -d >
>/etc/apache2/conf-available/hpkp-pin_python-vigo.es.conf
>
>Ya sólo queda reiniciar el apache para que tenga en cuenta los cambios.
>
>
>Más información:
>HPKP-Python: https://github.com/luisgf/hpkp-python
>HSTS: http://tools.ietf.org/html/rfc6797
>HPKP: https://tools.ietf.org/html/rfc7469
>
>
>Un Saludo, 
>
>--
>Luis González Fernández
>https://www.luisgf.es
>PGP ID: C918B80F (DD6F BFC1 FC14 4C81 34F8 EA1E 6BCB C27F C918 B80F)
>Twitter: @luisgf_2001 / Jabber: luisgf at mijabber.es
>
>_______________________________________________
>Asociación Python España: http://www.es.python.org/
>Python Vigo: http://www.python-vigo.es/
>Vigo mailing list
>Vigo at lists.es.python.org
>https://lists.es.python.org/listinfo/vigo

-- 
Enviado desde el teléfono disculpa la brevedad.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.es.python.org/pipermail/vigo/attachments/20160218/14e213ec/attachment.html>


More information about the Vigo mailing list