via blue
je quote :
HPKP best practices if you choose to implement - Server - Let's Encrypt Community Support
https://scotthelme.co.uk/hpkp-http-public-key-pinning/
https://scotthelme.co.uk/hpkp-toolset/
https://tools.ietf.org/html/rfc7469#page-7
eli5 :
Si le browser reçoit un header "Public-Key-Pins" avec une liste de hash, il va les stocker en local avec le domaine associé (pour un temps donnée par le max-age, la rfc conseille 2 mois)
Firefox les stocke au même endroit que les HSTS : http://security.stackexchange.com/questions/92954/how-can-i-see-which-sites-have-set-the-hsts-flag-in-my-browser
Quand un browser se connecte en https à un site, et qu'il a en local une entrée HPKP, il va y avoir une condition pour que la connexion s'établisse :
- Un des hash de l'entrée HPKP doit correspondre au hash d'une clé publique d'un des certificats de la chaine de certification
Les hashs dans le header qui ne correspondent à rien sont considérés comme des backup.
Si aucun hash de l'entrée HPKP locale ne correspond à aucun hash de clé publique de la chaine : impossible de se connecter.
à partir de là, on peut implémenter comme on veut HPKP, en étant plus ou moins strict.
Par exemple, pour https://infomee.fr, grâce à https://report-uri.io/home/pkp_hash on peut voir les hash des clés publiques de ma chaine de certification :
Leaf : Here is your PKP hash for infomee.fr: pin-sha256="oM+/1421Ew13AzUUxBTNbJjxofRe40CxO2Lt89BUeHk="
Intermediate : Here is your PKP hash for Let's Encrypt Authority X3: pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="
Root : Here is your PKP hash for DST Root CA X3: pin-sha256="Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="
Si je décide de renvoyer dans le header Public-Key-Pins seulement le hash du root :
- un certificat délivré par une autre CA root ne pourra être utilisé pour faire du mitm : mes visiteurs auront un block
Ce qui est déjà bien, mais si cette autorité est corrompue, un certificat frauduleux pourra toujours être utilisé.. C'est là qu'on peut aller plus loin et utiliser l'intermediate seulement ou encore plus loin le leaf seulement
Test :
- on pin le leaf et le root
- change le certif pour avoir un leaf différent
- on reload : ça passe car il reste toujours un valid pin
Pour être top secure mais touchy à config/gérer : pin seulement le leaf (et bien sur un backup)
via blue, putain c'est pour ça que ça pue la merde nginx, c'est que y'a un algo de merde derrière sur les order de matching de blocs ... je hais vraiment ce truc, c'est pas structuré, c'est pas beau, c'est pas propre... Vive haproxy et apache 2.4.
Directive if has problems when used in location context, in some cases it doesn’t do what you expect but something completely different instead. In some cases it even segfaults. It’s generally a good idea to avoid it if possible.
Bonjour on vend des loadbalancers 2K€+ l'unité mais on est pas foutus de faire une methode if qui segfault pas.
Viva haproxy, VIVA LA REVOLUCION
Un article intéressant sur les metriques de nginx
j'aime les idées comme ça :)
'faudrait déjà que graylog soit un peu moins chiant à configurer/installer ;-)