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 RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
tachtler:let_s_encrypt_-_hpkp [2018/10/12 07:08] – [DST Root CA X3 (Cross Signed)] klaustachtler:let_s_encrypt_-_hpkp [2018/10/12 14:19] – [Let's Encrypt - HPKP] klaus
Zeile 12: Zeile 12:
 | 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|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]] |+Mozilla       | [[https://developer.mozilla.org/de/docs/Web/Security/Public_Key_Pinning| MDN web docs - Public Key Pinning]] |
  
 ===== Vorbereitung ===== ===== Vorbereitung =====
Zeile 48: Zeile 48:
 :!: **HINWEIS** - **Nachfolgend wird die Datei ''fullchain.pem'' benötigt !** :!: **HINWEIS** - **Nachfolgend wird die Datei ''fullchain.pem'' benötigt !**
  
-===== FINGERPRINT erstellen =====+===== Zertifikate speichern =====
  
 Um bequem **FINGERPRINTs** aus der **in Benutzung befindlichen Zertifikatskette** erstellen zu können, ist es erforderlich, mit einem Editor der Wahl und nachfolgendem Befehl, **alle Zertifikate** aus der Datei, hier unter  Um bequem **FINGERPRINTs** aus der **in Benutzung befindlichen Zertifikatskette** erstellen zu können, ist es erforderlich, mit einem Editor der Wahl und nachfolgendem Befehl, **alle Zertifikate** aus der Datei, hier unter 
   * '' /opt/dehydrated-master/certs/tachtler.net/fullchain.pem''   * '' /opt/dehydrated-master/certs/tachtler.net/fullchain.pem''
 zu extrahieren. zu extrahieren.
- 
-==== Zertifikate extrahieren ==== 
  
 <code> <code>
Zeile 196: Zeile 194:
 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 242: Zeile 240:
 </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 274: Zeile 272:
 </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 331: Zeile 329:
 </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 382: Zeile 380:
  
 </code> </code>
 +
 +Anschließend kann mit nachfolgendem Befehl überprüft werden, ob alle Dateien richtig erstellt wurden:
 +<code>
 +# ls -l /opt/dehydrated-master/certs/*
 +/opt/dehydrated-master/certs/tachtler.net:
 +total 44
 +-rw------- 1 root root 1704 Aug 30 09:12 cert-1535613155.csr
 +-rw------- 1 root root 2508 Aug 30 09:12 cert-1535613155.pem
 +lrwxrwxrwx 1 root root   19 Aug 30 09:12 cert.csr -> cert-1535613155.csr
 +lrwxrwxrwx 1 root root   19 Aug 30 09:12 cert.pem -> cert-1535613155.pem
 +-rw------- 1 root root 1680 Aug 30 09:12 chain-1535613155.pem
 +lrwxrwxrwx 1 root root   20 Aug 30 09:12 chain.pem -> chain-1535613155.pem
 +-rw-r--r-- 1 root root 1314 Oct 12 07:07 DST_Root_CA_X3.pem
 +-rw------- 1 root root 4188 Aug 30 09:12 fullchain-1535613155.pem
 +lrwxrwxrwx 1 root root   24 Aug 30 09:12 fullchain.pem -> fullchain-1535613155.pem
 +-rw-r--r-- 1 root root 1647 Oct 12 06:45 Let_s_Encrypt_Authority_X3.pem
 +-rw-r--r-- 1 root root 1647 Jan 20  2018 Let_s_Encrypt_Authority_X4.pem
 +-rw------- 1 root root 3243 Aug 30 09:12 privkey-1535613155.pem
 +lrwxrwxrwx 1 root root   22 Aug 30 09:12 privkey.pem -> privkey-1535613155.pem
 +-rw------- 1 root root 2549 Aug 30 09:20 tachtler.net.pem
 +-rw-r--r-- 1 root root  893 Oct 12 07:01 trustidrootx3_chain.p7b
 +</code>
 +
 +===== 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.txt · Zuletzt geändert: 2021/03/06 11:00 von klaus