Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:let_s_encrypt_-_hpkp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:let_s_encrypt_-_hpkp [2018/10/12 07:13]
klaus
tachtler:let_s_encrypt_-_hpkp [2018/10/12 14:22] (aktuell)
klaus [Let's Encrypt - HPKP]
Zeile 11: Zeile 11:
 | Scott Helme   | [[https://​scotthelme.co.uk/​hpkp-http-public-key-pinning/​|HPKP:​ HTTP Public Key Pinning]] | | Scott Helme   | [[https://​scotthelme.co.uk/​hpkp-http-public-key-pinning/​|HPKP:​ HTTP Public Key Pinning]] |
 | Let's Encrypt | [[https://​letsencrypt.org/​certificates/​|Chain of Trust]] ​                                | | Let's Encrypt | [[https://​letsencrypt.org/​certificates/​|Chain of Trust]] ​                                |
-| Report URI    | [[https://​report-uri.com/​home/​pkp_hash|Create your HPKP hash]] ​                          ​+| Report URI    | [[https://​report-uri.com/​home/​pkp_hash|Report URI - Create your HPKP hash]] ​             
-re{raise}ace  ​| [[https://reraise.eu/2016/06/30/let-s-encrypt-hpkp-in-der-praxis-einsetzen-best-practice|Let's Encrypt & Public Key Pinning ​in der Praxis einsetzen]] |+Report URI    ​| [[https://report-uri.com/home/pkp_analyse|Report URI - Analyse your HPKP policy]] ​       | 
 +| Mozilla ​      | [[https://developer.mozilla.org/​de/​docs/​Web/​Security/​Public_Key_PinningMDN web docs - Public Key Pinning]] |
  
 ===== Vorbereitung ===== ===== Vorbereitung =====
Zeile 194: Zeile 195:
 Anschließend können nun durch "**Cut & Paste**"​ (Ausschneiden & Einfügen) die entsprechenden Zertifikate in eigene Dateien gespeichert werden, was mit nachfolgenden Befehlen durchgeführt werden kann und wie folgt aussehen könnte: Anschließend können nun durch "**Cut & Paste**"​ (Ausschneiden & Einfügen) die entsprechenden Zertifikate in eigene Dateien gespeichert werden, was mit nachfolgenden Befehlen durchgeführt werden kann und wie folgt aussehen könnte:
  
-==== tachtler.net ====+==== Zertifikat: ​tachtler.net ====
 <​code>​ <​code>​
 # vim  /​opt/​dehydrated-master/​certs/​tachtler.net/​tachtler.net.pem # vim  /​opt/​dehydrated-master/​certs/​tachtler.net/​tachtler.net.pem
Zeile 240: Zeile 241:
 </​code>​ </​code>​
  
-==== Let's Encrypt Authority X3 (Aktive) ====+==== Zertitfikat: ​Let's Encrypt Authority X3 (Aktive) ====
 <​code>​ <​code>​
 # vim  /​opt/​dehydrated-master/​certs/​tachtler.net/​Let_s_Encrypt_Authority_X3.pem # vim  /​opt/​dehydrated-master/​certs/​tachtler.net/​Let_s_Encrypt_Authority_X3.pem
Zeile 272: Zeile 273:
 </​code>​ </​code>​
  
-==== Let's Encrypt Authority X4 (Backup) ====+==== Zertifikat: ​Let's Encrypt Authority X4 (Backup) ====
  
 Unter nachfolgendem Link kann das **Backup** - [[https://​letsencrypt.org/​|Let'​s Encrypt]]-Zertifikat heruntergeladen werden, Unter nachfolgendem Link kann das **Backup** - [[https://​letsencrypt.org/​|Let'​s Encrypt]]-Zertifikat heruntergeladen werden,
Zeile 329: Zeile 330:
 </​code>​ </​code>​
  
-==== DST Root CA X3 (Cross Signed) ====+==== Zertifikat: ​DST Root CA X3 (Cross Signed) ====
  
 Unter nachfolgendem Link kann das **DST Root CA X3 (Cross Signed)** - [[https://​letsencrypt.org/​|Let'​s Encrypt]]-Zertifikat heruntergeladen werden, Unter nachfolgendem Link kann das **DST Root CA X3 (Cross Signed)** - [[https://​letsencrypt.org/​|Let'​s Encrypt]]-Zertifikat heruntergeladen werden,
Zeile 404: Zeile 405:
  
 ===== FINGERPRINT erstellen ===== ===== FINGERPRINT erstellen =====
 +
 +Die in vorhergehenden Bereich erstellten Zertifikate
 +  * ''​tachtler.net.pem''​
 +  * ''​Let_s_Encrypt_Authority_X3.pem''​
 +  * ''​Let_s_Encrypt_Authority_X4.pem''​
 +  * ''​DST_Root_CA_X3.pem''​
 +sollen nun als **Grundlage zur Erstellung der FINGERPRINTs** verwendet werden.
 +
 +Nachfolgende Befehle erstellen nun die **''​base64''​** FINGERPRINTs für die jeweils einzelnen Zertifikate:​
 +
 +==== FINGERPRINT:​ tachtler.net ====
 +
 +<​code>​
 +# openssl x509 -pubkey < /​opt/​dehydrated-master/​certs/​tachtler.net/​tachtler.net.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
 +reoYu6y4qPE3Blm9PMCjogm8J7/​vgpQsOt51hiLKCl8=
 +</​code>​
 +
 +==== FINGERPRINT:​ Let's Encrypt Authority X3 (Aktive) ====
 +
 +<​code>​
 +# openssl x509 -pubkey < /​opt/​dehydrated-master/​certs/​tachtler.net/​Let_s_Encrypt_Authority_X3.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
 +YLh1dUR9y6Kja30RrAn7JKnbQG/​uEtLMkBgFF2Fuihg=
 +</​code>​
 +
 +==== FINGERPRINT:​ Let's Encrypt Authority X4 (Backup) ====
 +
 +<​code>​
 +# openssl x509 -pubkey < /​opt/​dehydrated-master/​certs/​tachtler.net/​Let_s_Encrypt_Authority_X4.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
 +sRHdihwgkaib1P1gxX8HFszlD+7/​gTfNvuAybgLPNis=
 +</​code>​
 +
 +==== FINGERPRINT:​ DST Root CA X3 (Cross Signed) ====
 +
 +<​code>​
 +# openssl x509 -pubkey < /​opt/​dehydrated-master/​certs/​tachtler.net/​DST_Root_CA_X3.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
 +Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys=
 +</​code>​
 +
 +===== Apache Konfiguration =====
 +
 +Nachfolgender eine kurze Einführung in den Aufbau eines **HPKP**-Eintrags:​
 +
 +^ Parameter ​                            ^ Erläuterung ​                                 |
 +| ''​Header always set Public-Key-Pins''​ | Apache-Webserver Header Direktive |
 +| ''​pin-sha256'' ​                       | Der Parameter beinhaltet einen ''​base64''​ kodierten "​Subject Public Key Information"​ (SPKI) Fingerprint. Es ist auch möglich mehrere Pins zu verschiedenen öffentlichen Schlüsseln zu definieren. Einige Browser werden hier zukünftig neben SHA-256 evtl. weitere Hash-Algorithmen erlauben. |
 +| ''​max-age'' ​                          | Die Zeit in Sekunden, die ein Browser sich merken soll, dass auf diese Seite nur bei Benutzung eines der öffentlichen Schlüssel zugegriffen werden darf. |
 +| ''​includeSubdomains'' ​                | **Optional** - Wenn dieser optionale Parameter angegeben wird, wird die Regel auch auf alle Subdomains der Seite angewandt. |
 +| ''​report-uri'' ​                       | **Optional** - Wenn dieser optionale Parameter angegeben wird, werden Pinvalidierungsfehlschläge an die angegebene URL gemeldet. |
 +
 +==== /​etc/​httpd/​conf/​httpd.conf ====
 +
 +Nachfolgend kann durch die ermittelten **FINGERPRINTs** nun der **HPKP**-Eintrag für die Konfiguration wie folgt erstellt werden:
 +<code apache>
 +<​IfModule headers_module>​
 +        Header set Public-Key-Pins "​pin-sha256=\"​reoYu6y4qPE3Blm9PMCjogm8J7/​vgpQsOt51hiLKCl8=\";​ pin-sha256=\"​YLh1dUR9y6Kja30RrAn7JKnbQG/​uEtLMkBgFF2Fuihg=\";​ pin-sha256=\"​sRHdihwgkaib1P1gxX8HFszlD+7/​gTfNvuAybgLPNis=\";​ pin-sha256=\"​Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys=\";​ max-age=10; includeSubdomains;"​
 +</​IfModule>​
 +</​code>​
 +
 +Nachfolgende Seite welche unter dem externen Link
 +  * [[https://​report-uri.com/​home/​pkp_analyse|Report URI - Analyse your HPKP policy]]
 +kann dazu verwendet werden, um die erfolgreiche Implementierung von **HPKP** zu validieren.
  
  
tachtler/let_s_encrypt_-_hpkp.1539321230.txt.gz · Zuletzt geändert: 2018/10/12 07:13 von klaus