Outils pour utilisateurs

Outils du site


kb:crypto:hpkp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
kb:crypto:hpkp [2018/03/07 20:40] – créée beukb:crypto:hpkp [2018/03/17 22:57] beu
Ligne 1: Ligne 1:
 ======HPKP====== ======HPKP======
 +
 +====Comprendre HPKP====
 +
 +HPKP est une en-tête HTTPS permettant d'indiqué au client pendant une durée déterminé quel seront les certificats HTTPS qui pourront lui être présenté.
 +
 +Les problèmes pouvant être rencontrées sont les suivants :\\
 +  * C'est une méthode [[https://en.wikipedia.org/wiki/Trust_on_first_use| TOFU]], donc si la personne n'est jamais venu sur site ou après l’expiration de la durée indiqué dans l'en-tête depuis sa dernière visite , on ne pourra assuré quel n'est pas de MITM sur la communication.
 +  * Très casse gueule, si la moindre erreur la personne ne pourra pas accéder au site jusqu’à l'expiration de son en-tête.
 +  * Un changement de certificat se doit d'être réalisé en 3 étapes qui prennent la durée minimum indiqué dans l'en-tête.
 +
 +Voici les recommandations officiels :
 +  * Toujours avoir une paire de clé/certificat de secours dans l'en-tête en cas de compromissions du serveur.
 +  * La durée de rétention est de 60 jours
 +
 +====Compatibilité avec Let's Encrypt====
 +
 +**HPKP** est tout comme [[kb:crypto:DANE_TLSA]], nativement pas compatible avec **certbot**. Mais avec un peu de rigueur, et les bons arguments, on peut faire en sorte de garder ses clés publiques et donc permettre de garder ses empreintes **HPKP**. N'oubliez pas de faire un deuxième certificat non signé pour la backup.
 +
 +====Générer une entrée HPKP====
 +
 +Pour obtenir le **HASH** du certificat, il faut taper la commande :
  
 <code> <code>
 # openssl req -pubkey < /etc/letsencrypt/wiki.virtit.fr/live/cert.csr | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64 # openssl req -pubkey < /etc/letsencrypt/wiki.virtit.fr/live/cert.csr | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
 +</code>
 +
 +et il suffira d'ajouter une entêtes suivante dans votre serveur WEB, par exemple pour apache :
 +
 +<code>
 +Header always set Public-Key-Pins "max-age=5184000; pin-sha256=\"JOLIE_PETIT_HASH_ACTIF\"; pin-sha256=\"JOLIE_PETIT_HASH_BACKUP\"; "
 </code> </code>
kb/crypto/hpkp.txt · Dernière modification : 2018/07/03 07:45 de beu