Diese Anleitung ist für das PQC-dockerized-Toolkit. Anweisungen zum Einrichten des DigiCert PQC-dockerized Toolkits finden Sie in der PQC-dockerized Toolkit-Anleitung.
Das PQC-dockerized-Toolkit (Post Quantum Cryptographic) von DigiCert enthält alles, was notwendig ist, um eine Docker-Umgebung einzurichten, in der Sie ein hybrides TLS-Zertifikat erstellen können. Dieses hybride Zertifikat verwendet einen PQC-Algorithmus gepaart mit einem klassischen kryptografischen Algorithmus, sodass Sie die Funktionsfähigkeit hybrider Post-Quantum-TLS-Zertifikate testen können und gleichzeitig abwärtskompatibel bleiben.
Diese Anleitung führt Sie durch die Verwendung des DigiCert PQC-dockerized-Toolkits:
docker-compose
.s_server
- und -s_client
-Dienstprogramme.Das DigiCert-PQC-Toolkit ist für alle Secure Site Pro-Kunden zum Download verfügbar. Erfahren Sie mehr darüber, was zu jedem Secure Site Pro-Zertifikat gehört.
Das DigiCert-PQC-dockerized Toolkit enthält folgende Dateien:
Sorgen Sie dafür, dass diese Voraussetzungen erfüllt sind, bevor Sie diese Anleitung benutzen:
Überprüfen Sie vor dem Herunterladen des PQC-dockerized Toolkits, ob Docker Engine und Docker Compose auf Ihrem System installiert sind.
Falls diese Befehle sind nicht erkannt werden, ist Docker nicht auf Ihrem System installiert. Für Informationen über das Installieren von Docker auf Ihrem System siehe Voraussetzungen.
Öffnen Sie ein Terminalfenster und führen Sie docker --version
und docker-compose --version
aus. Die Ausgabe sollte ähnlich aussehen wie unten.
$ docker --version
Docker version 18.03.0-ce, build 0520e24
$ docker-compose --version
docker-compose version 1.20.1, build 5d8c71b
Öffnen Sie ein Eingabeaufforderungs- oder PowerShell-Fenster und führen Sie docker --version
aus. Die Ausgabe sollte ähnlich aussehen wie unten.
> docker --version
Docker version 18.03.0-ce, build 0520e24
Sobald das PQC-dockerized Toolkit heruntergeladen und extrahiert ist, können Sie die Container anhand von docker-compose
erstellen.
Öffnen Sie ein Terminalfenster, und wechseln Sie in das extrahierte DigiCert-PQC-Docker-Verzeichnis.
cd [path/to/dir/]digicert-pqc-docker
Erstellen Sie als Nächstes den PQC-Toolkit-Container. Dies lädt alle Bildabhängigkeiten herunter und konfiguriert die Container-Umgebung.
Falls dies das erste Mal ist, dass der Befehl ausgeführt wird, müssen Sie möglicherweise warten, bis das erforderliche Ubuntu-Image von Docker Hub heruntergeladen wurde.
docker-compose build
Jetzt können Sie den PQC-Toolkit-Container im unabhängigen Modus starten.
docker-compose up -d
Starting digicert-pqc-docker_pqc_1 ... done
Congratulations! Der PQC-dockerized Toolkit-Container wird ausgeführt.
Wie Sie auf die Container-Umgebung zugreifen und zu experimentieren beginnen können, erfahren Sie unter In den Container gehen.
Um mit den enthaltenen Demo-Skripten und der modifizierten OpenSSL-App zu experimentieren, müssen Sie zuerst in die Container-Umgebung gehen.
Verwenden Sie docker-compose exec
, um eine Bash-Session im laufenden Container zu starten.
docker-compose exec pqc /bin/bash
Wenn Sie zum ersten Mal in den Container gehen, befinden Sie sich im /app-Verzeichnis. Dieses Verzeichnis ist die Basis des gesamten PQC-Toolkits und ergänzender Ressourcen. Die folgende Tabelle beschreibt die wichtigsten Unterverzeichnisse und Dateien, die sich im /app-Verzeichnis befinden.
Verzeichnis/Datei | Beschreibung |
---|---|
digicert-pqc/ | Primäres Toolkit-Verzeichnis. |
certs/ | Verzeichnis zum Speichern generierter Zertifikate. |
connector/ | ISARA Catalyst OpenSSL Connector-Ressourcen |
demo/ | Demo-Skripte und Ressourcen. |
certs/ | Verzeichnis zum Speichern generierter Demo-Zertifikate. |
configs/ | Enthält Zertifikatkonfigurationsdateien, die zum Generieren von Demo-Zertifikaten verwendet werden. |
demo.html | Eine HTML-Datei, die bei Ausführung im Webserver-Modus über das run_server.sh-Skript bedient werden kann. |
cert_gen_demo.sh |
Generiert und testet eine vollständige quantum-sichere Zertifikatskette unter Verwendung von config-Dateien, die sich in /app/digicert-pqc/demo/configs befinden. Siehe Demo-Zertifikate generieren. |
run_client.sh |
Stellt eine Verbindung zu einem laufenden s_server anhand des s_client-Dienstprogramms von OpenSSL zum Testen der Funktionalität her. Siehe Basic-Modus: Verbinden mithilfe von run_client.sh-Skript. |
run_server.sh |
Startet einen Basis-Webserver anhand des s_server-Dienstprogramms von OpenSSL und lädt die Zertifikate die sich in /app/digicert-pqc/demo/certs befinden. Siehe Starten eines Demoservers. |
pqpki-openssl-1.0.2r/ | Übersetzte OpenSSL Version 1.0.2r geändert mit dem ISARA OpenSSL-Connector-Patch. |
resources/ | Ergänzende PQC-Toolkit-Ressourcendateien. |
Um Zertifikatsfeldwerte zu ändern, modifizieren Sie die Zertifikatskonfigurationsdateien (in /app/digicert-pqc/demo/configs).
Um eine vollständige quantumsichere Zertifikatskette zu generieren, verwenden Sie das cert_gen_demo.sh
-Skript (in /app/digicert-pqc/demo). Wenn Sie es ausführen, geschieht Folgendes:
Stellen Sie beim Generieren von Demo-Zertifikaten sicher, dass Sie sich im Verzeichnis /app/digicert-pqc/demo befinden.
Führen Sie nun das Skript aus.
cd /app/digicert-pqc/demo
./cert_gen_demo.sh
Sie sollten diese Ausgabe sehen:
engine "IQREngine" set.
XMSS key pair has been generated:
engine "IQREngine" set.
DILITHIUM key pair has been generated:
engine "IQREngine" set.
RAINBOW key pair has been generated:
engine "IQREngine" set.
engine "IQREngine" set.
engine "IQREngine" set.
Generating a EC private key
writing new private key to '/app/digicert-pqc/demo/certs/ecdsa_without_xmss_catalyst_mixed_chain_root_private_key.pem'
-----
Signature ok
subject=/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Root
Getting Private key
engine "IQREngine" set.
Successfully created XMSS signature
Generating a EC private key
writing new private key to '/app/digicert-pqc/demo/certs/ecdsa_without_dilithium_catalyst_mixed_chain_intermediate_private_key.pem'
-----
engine "IQREngine" set.
Signature ok
subject=/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Test Intermediate CA
Getting CA Private Key
engine "IQREngine" set.
Successfully created XMSS signature
Generating a EC private key
writing new private key to '/app/digicert-pqc/demo/certs/ecdsa_without_rainbow_catalyst_mixed_chain_private_key.pem'
-----
engine "IQREngine" set.
Signature ok
subject=/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=digicert.pqc
Getting CA Private Key
engine "IQREngine" set.
engine "IQREngine" set.
/app/digicert-pqc/demo/certs/rainbow_ecdsa_x509_catalyst_mixed_chain_server_certificate.pem: OK
engine "IQREngine" set.
2 : ok : /C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Root
1 : ok : /C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Test Intermediate CA
0 : ok : /C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=digicert.pqc
Success!!
Führen Sie zum Testen der generierten Demo-Zertifikate das run_server.sh
-Skript aus. Dieses Skript kann in einem von zwei Modi ausgeführt werden: Basic oder HTTP.
http
-Argument weg.http
-Argument ein.Modus | Befehl | Beschreibung |
---|---|---|
Basic |
./run_server.sh
|
Startet einen OpenSSL-s_server, der Verbindungen über das s_client-Dienstprogramm von OpenSSL akzeptiert. |
HTTP |
./run_server.sh http
|
Startet einen OpenSSL-s_server der HTTPS-Verbindungen am Port 443 akzeptiert. |
Um einen laufenden s_server zu stoppen,, drücken Sie im Terminalfenster in dem der Server läuft, auf CTRL+C.
Stellen Sie, bevor Sie einen Demoserver im BASIC-Modus starten, sicher, dass Sie sich im Verzeichnis /app/digicert-pqc/demo befinden und die die Demo-Zertifikate generiert haben.
Führen Sie nun das Skript aus.
./run_server.sh
Sie sollten diese Ausgabe sehen:
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT
Das s_server-Dienstprogramm wird nun im BASIC-Modus ausgeführt und kann Verbindungen per s_client akzeptieren. Für die Verbindung zu einem laufenden Demoserver siehe Basic-Modus: Verbinden mithilfe von run_client.sh-Skript.
Stellen Sie, bevor Sie einen Demoserver im HTTP-Modus starten, sicher, dass Sie sich im Verzeichnis /app/digicert-pqc/demo befinden und die die Demo-Zertifikate generiert haben.
Führen Sie nun das Skript aus und beziehen Sie das http
-Argument ein.
./run_server.sh http
Sie sollten diese Ausgabe sehen:
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT
Das s_server-Dienstprogramm wird nun im HTTP-Modus ausgeführt und kann Verbindungen am Port 443 akzeptieren. Für die Verbindung zu einem laufenden Demoserver siehe Verbinden mithilfe von cURL.
Nach dem Ausführen des run_server.sh
-Skripts zum Starten eines Demoservers, können Sie eine Verbindung zu ihm herstellen und die Demo-Zertifikatskette testen.
Wie Sie eine Verbindung zum laufenden Demoserver herstellen hängt davon ab, in welchem Modus der Server gestartet wurde.
Das run_client.sh
-Skript verwendet das s_client-Dienstprogramm von OpenSSL, um eine Verbindung zu einem laufenden s_server herzustellen. Stellen Sie vor der Ausführung dieses Skripts sicher, dass Sie einen s_server durch die Ausführung des run_server.sh
-Skripts im BASIC-Modus gestartet haben. Siehe Starten eines Servers im Basic-Modus.
Während ein aktiver s_server in einem Ihrer Terminalfenster im Basic-Modus läuft, öffnen Sie ein neues Terminalfenster. Starten Sie im neuen Fenster eine weitere bash-Session mit docker-compose exec
.
cd [path/to/dir/]digicert-pqc-docker
docker-compose exec pqc /bin/bash
Gehen Sie zum Demo-Verzeichnis und führen Sie das run_client.sh
-Skript aus.
cd /app/digicert-pqc/demo
./run_client.sh
Sie sollten diese Ausgabe sehen:
engine "IQREngine" set.
CONNECTED(00000003)
depth=1 C = US, ST = Utah, L = Lehi, O = "DigiCert, Inc.", OU = DigiCert PQC, CN = DigiCert PQC Root
verify return:1
depth=0 C = US, ST = Utah, L = Lehi, O = "DigiCert, Inc.", OU = DigiCert PQC, CN = DigiCert PQC Test Intermediate CA
verify return:1
---
Certificate chain
0 s:/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Test Intermediate CA
i:/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Root
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Test Intermediate CA
issuer=/C=US/ST=Utah/L=Lehi/O=DigiCert, Inc./OU=DigiCert PQC/CN=DigiCert PQC Root
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 9868 bytes and written 2331 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-NHDH-DILM-AES256-GCM-SHA384
Server public key is 521 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-NHDH-DILM-AES256-GCM-SHA384
Session-ID: {{Session-ID}}
Session-ID-ctx:
Master-Key: {{Master-Key}}
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
[...]
Start Time: 1563994600
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---
Im anderen Terminalfenster mit dem aktiven s_server sehen Sie diese Ausgabe:
read from 0x5581e0750b80 [0x5581e07656f3] (5 bytes => 5 (0x5))
0000 - 16 03 01 00 96 .....
read from 0x5581e0750b80 [0x5581e07656f8] (150 bytes => 150 (0x96))
0000 - 01 00 00 92 03 03 d9 c0-5a 73 35 d0 4e f2 31 f6 ........Zs5.N.1.
[...]
write to 0x5581e0750b80 [0x5581e076e100] (71 bytes => 71 (0x47))
0000 - 16 03 03 00 42 02 00 00-3e 03 03 c2 3b df 2f 01 ....B...>...;./.
[...]
write to 0x5581e0750b80 [0x5581e0769c43] (4953 bytes => 4953 (0x1359))
0000 - 16 03 03 13 54 0b 00 13-50 00 13 4d 00 13 4a 30 ....T...P..M..J0
[...]
write to 0x5581e0750b80 [0x5581e0769c43] (4609 bytes => 4609 (0x1201))
0000 - 16 03 03 11 fc 0c 00 11-f8 03 00 17 41 04 0d 97 ............A...
[...]
write to 0x5581e0750b80 [0x5581e076e100] (9 bytes => 9 (0x9))
0000 - 16 03 03 00 04 0e 00 00-00 .........
read from 0x5581e0750b80 [0x5581e07656f3] (5 bytes => 5 (0x5))
0000 - 16 03 03 08 48 ....H
read from 0x5581e0750b80 [0x5581e07656f8] (2120 bytes => 2120 (0x848))
0000 - 10 00 08 44 41 04 29 0a-07 84 0c f3 a4 e4 3e d1 ...DA.).......>.
[...]
read from 0x5581e0750b80 [0x5581e07656f3] (5 bytes => 5 (0x5))
0000 - 14 03 03 00 01 .....
read from 0x5581e0750b80 [0x5581e07656f8] (1 bytes => 1 (0x1))
0000 - 01 .
read from 0x5581e0750b80 [0x5581e07656f3] (5 bytes => 5 (0x5))
0000 - 16 03 03 00 28 ....(
read from 0x5581e0750b80 [0x5581e07656f8] (40 bytes => 40 (0x28))
0000 - e1 d7 30 8b 12 ef d1 dc-31 90 97 d0 0e 54 9c aa ..0.....1....T..
[...]
write to 0x5581e0750b80 [0x5581e076e100] (175 bytes => 175 (0xAF))
0000 - 16 03 03 00 aa 04 00 00-a6 00 00 1c 20 00 a0 02 ............ ...
[...]
write to 0x5581e0750b80 [0x5581e076e100] (6 bytes => 6 (0x6))
0000 - 14 03 03 00 01 01 ......
write to 0x5581e0750b80 [0x5581e076e100] (45 bytes => 45 (0x2D))
0000 - 16 03 03 00 28 d0 99 97-94 6d a1 5c f8 b0 c0 65 ....(....m.\...e
[...]
-----BEGIN SSL SESSION PARAMETERS-----
[...]
-----END SSL SESSION PARAMETERS-----
Shared ciphers:ECDHE-NHDH-DILM-AES256-GCM-SHA384:ECDHE-NHDH-SIDH-DILM-AES256-GCM-SHA384
Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1:HSS+SHA512:XMSS+SHA512:XMSSmt+SHA512:DILITHIUM+SHA512:DILITHIUM+SHA512:0xE0+SHA512
Shared Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1:HSS+SHA512:DILITHIUM+SHA512:DILITHIUM+SHA512
Supported Elliptic Curve Point Formats: uncompressed:ansiX962_compressed_prime:ansiX962_compressed_char2
Supported Elliptic Curves: P-256:P-521:brainpoolP512r1:brainpoolP384r1:P-384:brainpoolP256r1:secp256k1:B-571:K-571:K-409:B-409:K-283:B-283:0xFE01
Shared Elliptic curves: P-256:P-521:brainpoolP512r1:brainpoolP384r1:P-384:brainpoolP256r1:secp256k1:B-571:K-571:K-409:B-409:K-283:B-283:UNDEF
CIPHER is ECDHE-NHDH-DILM-AES256-GCM-SHA384
Secure Renegotiation IS supported
Wenn Sie mithilfe von cURL die Verbindung zu einem laufenden s_server herstellen,, stellen Sie sicher, dass Sie einen s_server im HTTP-Modus gestartet haben. Siehe Starten eines Servers im HTTP-Modus.
Wenn Sie in einem ihrer Terminalfenster einen aktiven Demo Server im HTTP-Modus ausführen, müssen Sie als Erstes ein neues Terminalfenster öffnen. Starten Sie im neuen Fenster eine weitere bash-Session mit docker-compose exec
.
cd [path/to/dir/]digicert-pqc-docker
docker-compose exec pqc /bin/bash
Stellen Sie nun mithilfe von cURL eine Verbindung zu dem laufenden Server her. Die Demo-Zertifikate, die sie generiert haben, sind selbstsigniert und führen zu einer Warnung „Zertifikat nicht vertrauenswürdig“. Um solche Warnungen zu ignorieren, benötigen Sie den -k
-Schalter.
curl -k https://digicert.pqc/demo.html
Sie sollten diese Ausgabe sehen:
<html>
<head></head>
<body>
<h1>Hello world! PQC FUTURE IS HERE!</h1>
</body>
</html>
Im anderen Terminalfenster mit dem aktiven s_server sehen Sie diese Ausgabe:
read from 0x556d44ced1e0 [0x556d44cf61a3] (5 bytes => 5 (0x5))
0000 - 16 03 01 02 00 .....
read from 0x556d44ced1e0 [0x556d44cf61a8] (512 bytes => 512 (0x200))
0000 - 01 00 01 fc 03 03 a3 d2-a7 5e 12 44 88 93 78 fd .........^.D..x.
[...]
write to 0x556d44ced1e0 [0x556d44d05120] (94 bytes => 94 (0x5E))
0000 - 16 03 03 00 59 02 00 00-55 03 03 36 a7 a4 2d 57 ....Y...U..6..-W
[...]
write to 0x556d44ced1e0 [0x556d44cffc53] (4954 bytes => 4954 (0x135A))
0000 - 16 03 03 13 55 0b 00 13-51 00 13 4e 00 13 4b 30 ....U...Q..N..K0
[...]
write to 0x556d44ced1e0 [0x556d44d05120] (220 bytes => 220 (0xDC))
0000 - 16 03 03 00 d7 0c 00 00-d3 03 00 17 41 04 5a 06 ............A.Z.
[...]
write to 0x556d44ced1e0 [0x556d44d05120] (9 bytes => 9 (0x9))
0000 - 16 03 03 00 04 0e 00 00-00 .........
read from 0x556d44ced1e0 [0x556d44cf61a3] (5 bytes => 5 (0x5))
0000 - 16 03 03 00 46 ....F
read from 0x556d44ced1e0 [0x556d44cf61a8] (70 bytes => 70 (0x46))
0000 - 10 00 00 42 41 04 c3 ce-7a a8 53 76 28 fc 55 c5 ...BA...z.Sv(.U.
[...]
0040 - 6b c7 1a 5e f5 0e k..^..
read from 0x556d44ced1e0 [0x556d44cf61a3] (5 bytes => 5 (0x5))
0000 - 14 03 03 00 01 .....
read from 0x556d44ced1e0 [0x556d44cf61a8] (1 bytes => 1 (0x1))
0000 - 01 .
read from 0x556d44ced1e0 [0x556d44cf61a3] (5 bytes => 5 (0x5))
0000 - 16 03 03 00 28 ....(
read from 0x556d44ced1e0 [0x556d44cf61a8] (40 bytes => 40 (0x28))
0000 - 77 07 27 75 71 54 a9 bc-89 2f 69 df 45 6a 6c d8 w.'uqT.../i.Ejl.
[...]
write to 0x556d44ced1e0 [0x556d44d05120] (6 bytes => 6 (0x6))
0000 - 14 03 03 00 01 01 ......
write to 0x556d44ced1e0 [0x556d44d05120] (45 bytes => 45 (0x2D))
0000 - 16 03 03 00 28 78 f8 92-c1 cd d0 73 6b 72 6e 4c ....(x.....skrnL
[...]
read from 0x556d44ced1e0 [0x556d44cf61a3] (5 bytes => 5 (0x5))
0000 - 17 03 03 00 6d ....m
read from 0x556d44ced1e0 [0x556d44cf61a8] (109 bytes => 109 (0x6D))
0000 - 77 07 27 75 71 54 a9 bd-0c 8f e3 9c f3 90 35 a1 w.'uqT........5.
[...]
FILE:demo.html
write to 0x556d44ced1e0 [0x556d44cffc53] (117 bytes => 117 (0x75))
0000 - 17 03 03 00 70 78 f8 92-c1 cd d0 73 6c 14 de 14 ....px.....sl...
[...]
ACCEPT
Congratulations! Sie haben Ihre PQC-dockerized Toolkit-Umgebung erfolgreich eingerichtet und getestet. Sie können nun mit der Erstellung von Zertifikaten und der Einrichtung quantumsicherer Verbindungen experimentieren.