Inhaltsverzeichnis
Let's Encrypt - HPKP
Let's Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle (CA), welche offiziell dem Nutzen der Öffentlichkeit dienen soll. Let's Encrypt ist ein Service der von der Internet Security Research Group (ISRG) zur Verfügung gestellt wird.
Let's Encrypt bietet öffentlich, jederman digitalen Zertifikate an, um HTTPS (SSL / TLS) Verschlüsselung für Websites zu ermöglichen. Dies wird kostenlos und in einer möglichst benutzerfreundlichen Art und Weise angeboten. Let's Encrypt tut dies, weil Let's Encrypt offiziell ein sichereres und die Privatsphäre respektierendes Internet fördern möchte.
Weitere Informationen zum Einsatz von HPKP in Verwendung mit Let's Encrypt-Zertifikaten sind unter nachfolgendem externen Links verfügbar:
Beschreibung | Link |
---|---|
Scott Helme | HPKP: HTTP Public Key Pinning |
Let's Encrypt | Chain of Trust |
Mozilla | MDN web docs - Public Key Pinning |
Vorbereitung
Nachfolgende Anleitung setzt voraus, das bereits erfolgreich ein Let's Encrypt-Zertifikat erstellt wurde bzw. werden kann.
Wie Zertifikate via Let's Encrypt erstellt werden können, kann unter nachfolgenden internen Links nachgelesen werden:
Nachfolgende Komponenten sollten nach der erfolgreichen Erstellung eines Let's Encrypt-Zertifikats vorhanden sein:
- privater Schlüssels
- Zertifikast-Requests
- Zertifikat
- einfachen Zertifikatskette
- vollständige Zertifikatskette
Falls eine der vorhergehenden Anleitungen zur Erzeugung eines Let's Encrypt-Zertifikats genutzt wurde, sollte nachfolgender Befehl, eine Auflistung der vorhergehend genannten Komponenten, wie nachfolgende dargestellt, darstellen:
# ls -l /opt/dehydrated-master/certs/* /opt/dehydrated-master/certs/tachtler.net: total 24 -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------- 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------- 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
HINWEIS - Nachfolgend wird die Datei fullchain.pem
benötigt !
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
/opt/dehydrated-master/certs/tachtler.net/fullchain.pem
zu extrahieren.
# openssl s_client -showcerts -verify 3 -connect tachtler.net:443 < /dev/null
Nachfolgend das Ergebnis des Befehls:
# openssl s_client -showcerts -verify 3 -connect tachtler.net:443 < /dev/null verify depth is 3 CONNECTED(00000003) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = tachtler.net verify return:1 --- Certificate chain 0 s:/CN=tachtler.net i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 -----BEGIN CERTIFICATE----- MIIHLjCCBhagAwIBAgISA4/b0oJ088piwMXKvBdTjdqbMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA4MzAwNjIwMTVaFw0x ODExMjgwNjIwMTVaMBcxFTATBgNVBAMTDHRhY2h0bGVyLm5ldDCCAiIwDQYJKoZI hvcNAQEBBQADggIPADCCAgoCggIBAP6ptSprdM5GzYbBcfHKSDjyP4ou/xM0HDv+ GqwnFD9bO5mkSJPGVcOAXO2UUQSPnN9RU7KD/++zqaxI+oOSvEjH1ijxIB+NSVLh 6vBeCBFRmzJ/UfEohHz39IA+bDs+AqoFv0HvVbCmDnvRf1GoOyzPGC5VsMFTD+7k iNvu44Ggg9R7Z2k65LqqaeY3OywpslcfHYkdSy2q/F+TdOyCboKdN9k8lpuUvJq6 w7cEOft75QTSN31XzE96aQq4uHAggIYcrNgu7rUCR05hg5mfHYsjrEy2p/AGqrQI McurWashFPdyvg1sEp2uRYv7GO1U/RFZUp6h0fnfXPrhcQhfvgWU4TyBfpmQ7zUR mBZZK0slTBUpUHWhlQSUS2THHj5uUYleXGwwhsSHvYisXjiqhmf/34lV7jNbFt7k jMx6hzrZrHXei/OdVDhCfAyWJW2+1IUU9mw1M7XYwuZx/ZLrRquza9wUykYN8f8k ydGKu/ogjH8lMkVHrc4sNx61LFa7Qqrqx6ylUMDVzuXxFQE1CVMQ0+snirZPnHbC nRwfXz41XjGXidFBXPVc4Jhm3WihyYgIGHhgtkJwjzzw5dwTC42ILLyT+pubp9MH d8KciRqaWHD9twpLPVjHI+qtfk2oMA5Ak+Ula8EsJvJsX/zZUMsBsaWkAr6dF7uI XzKnUB3rAgMBAAGjggM/MIIDOzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYI KwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBBQkvwx ymp2uqIj6uSjxPAVAMTTMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyh MG8GCCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgz LmxldHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgz LmxldHNlbmNyeXB0Lm9yZy8wQgYDVR0RBDswOYIOKi50YWNodGxlci5uZXSCDHRh Y2h0bGVyLm5ldIIZd3d3LmRva3V3aWtpLnRhY2h0bGVyLm5ldDCB/gYDVR0gBIH2 MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0 dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMg Q2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQ YXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNh dGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9z aXRvcnkvMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHcAwRZK4Kdy0tQ5LcgKwQdw 1PDEm96ZGkhAwfoHUWT2M2AAAAFlibQ8owAABAMASDBGAiEAjyKZdko8RkIoCg1H 2pfx2CsBBgDPGjscnKH0Px2GR0cCIQCp1gdScGfltLcnmjBeSTUjmw4DKFx+88dA giAA847XngB1ACk8UZZUyDlluqpQ/FgH1Ldvv1h6KXLcpMMM9OVFR/R4AAABZYm0 PqYAAAQDAEYwRAIgM0WQIOCXafNl/8vQWoa08B1Uz84QssRvoHB4ffAXNOACICbo 7EJFTmTPr9tOmbEHFcFFcex+7k71T/alJlRWjaBHMA0GCSqGSIb3DQEBCwUAA4IB AQB3ejO9w6AQwgRH4nCsw2E+1WvXChxrnY+i5ZcbxMpUqwPfrhzfvV6SkryneSe+ hiMKM7rx5poyFgnpnaC3XGjIP9p4X69TmpyQWavFMdInxi+hhVDjxMDFJmqUXR3Z VmYAk6EhLClWWBkcMjTi1u4b4sZH/NJcnoovtFTEThZ1HQu2/P2LrhnInHwaROi/ 6/tZag819WHgL6PNjjzw0E0mMN/Y1CcyAiyLKsL6NRvDDwOZeflFoMazW/y+v3Xz qCDrGncGQzXvl3y8LbpyIt+sQn4Z8woWn2GjhRH8lPvmULL+lfuLa2lvjagIcUiC /SJsQCkCsDh6MnXGJw4P69yS -----END CERTIFICATE----- 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3 -----BEGIN CERTIFICATE----- MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj /PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== -----END CERTIFICATE----- --- Server certificate subject=/CN=tachtler.net issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 --- No client certificate CA names sent Peer signing digest: SHA512 Server Temp Key: ECDH, P-256, 256 bits --- SSL handshake has read 3966 bytes and written 415 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 4096 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: 941ACB4C1C77456480144B1EE71632F8882F87EFE50DD147E9AE328AA3694BC7 Session-ID-ctx: Master-Key: C7BC1ED9DECB55B63B7DDDA0BF96BEDC5C00B481EFAB2988B36F2885283A310EFAD32E084511C528BBF3D8CD9DEBD17D Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 7200 (seconds) TLS session ticket: 0000 - df 58 3c df e7 de df a2-6b c9 06 fa 15 72 ee 9c .X<.....k....r.. 0010 - 1c d9 74 e7 c1 7f 32 60-b3 79 c5 f3 dc 3e 28 8a ..t...2`.y...>(. 0020 - 66 81 e5 6f 2d 26 a4 84-d0 c0 46 2a ba 14 1a c5 f..o-&....F*.... 0030 - 2a 26 78 1d cc 5d 08 7e-9d 3c 29 21 93 ca fd 6b *&x..].~.<)!...k 0040 - 40 ac 21 64 0d db c9 62-41 b2 68 0f 03 57 94 b0 @.!d...bA.h..W.. 0050 - 11 48 9c 95 be db 39 0a-9d 11 59 9d 4b 61 ce e2 .H....9...Y.Ka.. 0060 - 68 ab a9 ef 86 bf 59 a9-34 31 8d bf 4b 11 54 69 h.....Y.41..K.Ti 0070 - 7d e6 f0 9a bd 25 d5 e5-64 a6 a7 da 23 fe af 76 }....%..d...#..v 0080 - 4d b8 3d a6 ad 13 b2 5b-bd e1 a4 2d 4f 06 fe 0b M.=....[...-O... 0090 - 61 a2 d5 e3 a4 76 5d fa-5a 97 ef d5 fd 1c 96 ee a....v].Z....... 00a0 - f1 e8 4d 72 d4 a9 74 87-96 e1 c7 04 a7 7b ea 30 ..Mr..t......{.0 00b0 - 78 ea a6 5e 3d 80 b1 11-27 ed 4e 62 93 9a 4a 7d x..^=...'.Nb..J} Start Time: 1539318048 Timeout : 300 (sec) Verify return code: 0 (ok) --- DONE
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:
Zertifikat: tachtler.net
# vim /opt/dehydrated-master/certs/tachtler.net/tachtler.net.pem -----BEGIN CERTIFICATE----- MIIHLjCCBhagAwIBAgISA4/b0oJ088piwMXKvBdTjdqbMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA4MzAwNjIwMTVaFw0x ODExMjgwNjIwMTVaMBcxFTATBgNVBAMTDHRhY2h0bGVyLm5ldDCCAiIwDQYJKoZI hvcNAQEBBQADggIPADCCAgoCggIBAP6ptSprdM5GzYbBcfHKSDjyP4ou/xM0HDv+ GqwnFD9bO5mkSJPGVcOAXO2UUQSPnN9RU7KD/++zqaxI+oOSvEjH1ijxIB+NSVLh 6vBeCBFRmzJ/UfEohHz39IA+bDs+AqoFv0HvVbCmDnvRf1GoOyzPGC5VsMFTD+7k iNvu44Ggg9R7Z2k65LqqaeY3OywpslcfHYkdSy2q/F+TdOyCboKdN9k8lpuUvJq6 w7cEOft75QTSN31XzE96aQq4uHAggIYcrNgu7rUCR05hg5mfHYsjrEy2p/AGqrQI McurWashFPdyvg1sEp2uRYv7GO1U/RFZUp6h0fnfXPrhcQhfvgWU4TyBfpmQ7zUR mBZZK0slTBUpUHWhlQSUS2THHj5uUYleXGwwhsSHvYisXjiqhmf/34lV7jNbFt7k jMx6hzrZrHXei/OdVDhCfAyWJW2+1IUU9mw1M7XYwuZx/ZLrRquza9wUykYN8f8k ydGKu/ogjH8lMkVHrc4sNx61LFa7Qqrqx6ylUMDVzuXxFQE1CVMQ0+snirZPnHbC nRwfXz41XjGXidFBXPVc4Jhm3WihyYgIGHhgtkJwjzzw5dwTC42ILLyT+pubp9MH d8KciRqaWHD9twpLPVjHI+qtfk2oMA5Ak+Ula8EsJvJsX/zZUMsBsaWkAr6dF7uI XzKnUB3rAgMBAAGjggM/MIIDOzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYI KwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBBQkvwx ymp2uqIj6uSjxPAVAMTTMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyh MG8GCCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgz LmxldHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgz LmxldHNlbmNyeXB0Lm9yZy8wQgYDVR0RBDswOYIOKi50YWNodGxlci5uZXSCDHRh Y2h0bGVyLm5ldIIZd3d3LmRva3V3aWtpLnRhY2h0bGVyLm5ldDCB/gYDVR0gBIH2 MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0 dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMg Q2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQ YXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNh dGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9z aXRvcnkvMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHcAwRZK4Kdy0tQ5LcgKwQdw 1PDEm96ZGkhAwfoHUWT2M2AAAAFlibQ8owAABAMASDBGAiEAjyKZdko8RkIoCg1H 2pfx2CsBBgDPGjscnKH0Px2GR0cCIQCp1gdScGfltLcnmjBeSTUjmw4DKFx+88dA giAA847XngB1ACk8UZZUyDlluqpQ/FgH1Ldvv1h6KXLcpMMM9OVFR/R4AAABZYm0 PqYAAAQDAEYwRAIgM0WQIOCXafNl/8vQWoa08B1Uz84QssRvoHB4ffAXNOACICbo 7EJFTmTPr9tOmbEHFcFFcex+7k71T/alJlRWjaBHMA0GCSqGSIb3DQEBCwUAA4IB AQB3ejO9w6AQwgRH4nCsw2E+1WvXChxrnY+i5ZcbxMpUqwPfrhzfvV6SkryneSe+ hiMKM7rx5poyFgnpnaC3XGjIP9p4X69TmpyQWavFMdInxi+hhVDjxMDFJmqUXR3Z VmYAk6EhLClWWBkcMjTi1u4b4sZH/NJcnoovtFTEThZ1HQu2/P2LrhnInHwaROi/ 6/tZag819WHgL6PNjjzw0E0mMN/Y1CcyAiyLKsL6NRvDDwOZeflFoMazW/y+v3Xz qCDrGncGQzXvl3y8LbpyIt+sQn4Z8woWn2GjhRH8lPvmULL+lfuLa2lvjagIcUiC /SJsQCkCsDh6MnXGJw4P69yS -----END CERTIFICATE-----
Zertitfikat: Let's Encrypt Authority X3 (Aktive)
# vim /opt/dehydrated-master/certs/tachtler.net/Let_s_Encrypt_Authority_X3.pem -----BEGIN CERTIFICATE----- MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj /PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== -----END CERTIFICATE-----
Zertifikat: Let's Encrypt Authority X4 (Backup)
Unter nachfolgendem Link kann das Backup - Let's Encrypt-Zertifikat heruntergeladen werden,
was z.B. mit nachfolgendem Befehl durchgeführt werden kann:
# wget https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem.txt -P /opt/dehydrated-master/certs/tachtler.net/ --2018-10-12 06:39:26-- https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem.txt Resolving letsencrypt.org (letsencrypt.org)... 104.108.65.96, 2a02:26f0:12:39c::ce0, 2a02:26f0:12:399::ce0 Connecting to letsencrypt.org (letsencrypt.org)|104.108.65.96|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1647 (1.6K) [text/plain] Saving to: ‘/opt/dehydrated-master/certs/tachtler.net/lets-encrypt-x4-cross-signed.pem.txt’ 100%[======================================>] 1,647 --.-K/s in 0s 2018-10-12 06:39:26 (122 MB/s) - ‘/opt/dehydrated-master/certs/tachtler.net/lets-encrypt-x4-cross- signed.pem.txt’ saved [1647/1647]
Anschließend kann die Datei noch umbenannt werden, damit diese besser in unser weiteres Verarbeitungsschema passt, was mit nachfolgendem Befehl durchgeführt werden kann:
# mv /opt/dehydrated-master/certs/tachtler.net/lets-encrypt-x4-cross-signed.pem.txt /opt/dehydrated-master/certs/tachtler.net/Let_s_Encrypt_Authority_X4.pem
# vim /opt/dehydrated-master/certs/tachtler.net/Let_s_Encrypt_Authority_X4.pem -----BEGIN CERTIFICATE----- MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc6bLEeMfizANBgkqhkiG9w0BAQsFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDEwMloXDTIxMDMxNzE2NDEwMlow SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFg0MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA4SR0Qnu3kTHZc/84qtjORFy3OQrcRK4NvUW5lzdnr71QT1/T EFRr90HajmPmbVvA6ECpjEH80QOJ/2JhCWDWBwV4mpC9GmQ+T9zPdy+Ja8tnr0FN xY0AwGv+jYTctfKVMajo9pCgQ0qTdFyzPkNpS4kiR3RRPplkw80kAfmELyh3FyKn 3cNsCExmLzd0xW+TjrBGNxZh0VCYyLAPT1hTfKz22i2WYVCtQ9wKpk+etVK5nI7v Tt9GszHcIPxpwqMgdT7sOBs2TmZm0t/1ZqSTL3umDpQ+YD1KSxxvurRNHDyRWG4v TcTacNvtATl2wEnn6TW1FAaQweWS4hD9a7m0hQIDAQABo4IBfTCCAXkwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu Y3JsMB0GA1UdDgQWBBTFsatOTLHNZDCTfsGEmQWr5gPiJTANBgkqhkiG9w0BAQsF AAOCAQEANlaeSdstfAtqFN3jdRZJFjx9X+Ob3PIDlekPYQ1OQ1Uw43rE1FUj7hUw g2MJKfs9b7M0WoQg7C20nJY/ajsg7pWhUG3J6rlkDTfVY9faeWi0qsPYXE6BpBDr 5BrW/Xv8yT8U2BiEAmNggWq8dmFl82fghmLzHBM8X8NZ3ZwA1fGePA53AP5IoD+0 ArpW8Ik1sSuQBjZ8oQLfN+G8OoY7MNRopyLyQQCNy4aWfE+xYnoVoa5+yr+aPiX0 7YQrY/cKawAn7QB4PyF5//IKSAVs7mAuB68wbMdE3FKfOHfJ24W4z/bIJTrTY8Y5 Sr4AUhtzf8oVDrHZYWRrP4joIcOu/Q== -----END CERTIFICATE-----
Zertifikat: DST Root CA X3 (Cross Signed)
Unter nachfolgendem Link kann das DST Root CA X3 (Cross Signed) - Let's Encrypt-Zertifikat heruntergeladen werden,
was z.B. mit nachfolgendem Befehl durchgeführt werden kann:
# wget --content-disposition https://www.identrust.com/node/935 -P /opt/dehydrated-master/certs/tachtler.net/ --2018-10-12 07:01:35-- https://www.identrust.com/node/935 Resolving www.identrust.com (www.identrust.com)... 192.35.177.67 Connecting to www.identrust.com (www.identrust.com)|192.35.177.67|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 893 [application/octet-stream] Saving to: ‘/opt/dehydrated-master/certs/tachtler.net/trustidrootx3_chain.p7b’ 100%[======================================>] 893 --.-K/s in 0.06s 2018-10-12 07:01:36 (13.6 KB/s) - ‘/opt/dehydrated-master/certs/tachtler.net/trustidrootx3_chain.p7b’ saved [893/893]
Anschließend soll die Datei vom Format p7b
in das Format pem
mit nachfolgendem Befehl umgewandelt und umbenannt werden:
# openssl pkcs7 -in /opt/dehydrated-master/certs/tachtler.net/trustidrootx3_chain.p7b -inform DER -print_certs -out DST_Root_CA_X3.pem
# vim /opt/dehydrated-master/certs/tachtler.net/DST_Root_CA_X3.pem subject=/O=Digital Signature Trust Co./CN=DST Root CA X3 issuer=/O=Digital Signature Trust Co./CN=DST Root CA X3 -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE-----
Anschließend kann mit nachfolgendem Befehl überprüft werden, ob alle Dateien richtig erstellt wurden:
# 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
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
# openssl x509 -pubkey < /opt/dehydrated-master/certs/tachtler.net/tachtler.net.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64 reoYu6y4qPE3Blm9PMCjogm8J7/vgpQsOt51hiLKCl8=
FINGERPRINT: Let's Encrypt Authority X3 (Aktive)
# 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=
FINGERPRINT: Let's Encrypt Authority X4 (Backup)
# 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=
FINGERPRINT: DST Root CA X3 (Cross Signed)
# 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=
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:
<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=90; includeSubdomains;" </IfModule>
Nachfolgende Seite welche unter dem externen Link
kann dazu verwendet werden, um die erfolgreiche Implementierung von HPKP zu validieren.