Ce guide porte sur la boîte à outils dockerisés PQC. Pour obtenir des instructions sur la mise en place de la boîte à outils PQC de DigiCert, consultez le guide de configuration de la boîte à outils PQC.
La boîte à outils de cryptographie post-quantique (PQC) de DigiCert contient tout ce dont vous avez besoin pour créer un certificat TLS hybride. Ce certificat hybride utilise un algorithme de chiffrement post-quantique associé à un algorithme de chiffrement classique. Ainsi, vous pouvez tester la viabilité du déploiement de certificats TLS hybrides post-quantiques tout en bénéficiant d’une rétrocompatibilité complète.
Le présent guide vous aide à utiliser la boîte à outils dockerisés PQC de DigiCert pour exécuter les tâches suivantes :
docker-compose
.s_server
et s_client
d’OpenSSL.La boîte à outils dockerisés PQC de DigiCert est disponible pour tous les clients Secure Site Pro sous forme de ressource téléchargeable. Découvrez les éléments inclus avec chaque certificat Secure Site Pro.
La boîte à outils dockerisés PQC de DigiCert contient les fichiers suivants :
Avant d’utiliser ce guide, assurez-vous que les conditions préalables suivantes sont remplies :
Avant de télécharger la boîte à outils dockerisée PQC, vérifiez que Docker Engine et Docker Compose sont installés sur votre système.
Si ces commandes ne sont pas reconnues, cela signifie que Docker n'est pas installé sur votre système. Consultez la page Conditions préalables pour obtenir des informations sur l'installation de Docker sur votre système.
Ouvrez une fenêtre du point de terminaison et exécutez docker --version
et docker-compose --version
. Le résultat devrait être similaire à celui présenté ci-dessous.
$ docker --version
Docker version 18.03.0-ce, build 0520e24
$ docker-compose --version
docker-compose version 1.20.1, build 5d8c71b
Ouvrez une invite de commande ou une fenêtre PowerShell et exécutez docker --version
. Le résultat devrait être similaire à celui présenté ci-dessous.
> docker --version
Docker version 18.03.0-ce, build 0520e24
Avec la boîte à outils dockerisés du PQC téléchargée et extraite, vous êtes prêt à construire le conteneur en utilisant docker-compose
.
Ouvrez une fenêtre du point de terminaison et rendez-vous sur le répertoire digicert-pqc-docker extrait.
cd [path/to/dir/]digicert-pqc-docker
Construisez alors le conteneur de la boîte à outils PQC. Cela permet de télécharger toutes les dépendances des images et de configurer l'environnement du conteneur.
Si c'est la première fois que vous exécutez la commande, il se peut que vous deviez attendre que l'image Ubuntu requise soit téléchargée depuis le Docker Hub.
docker-compose build
Vous êtes maintenant prêt à lancer le conteneur de la boîte à outils PQC en mode détaché.
docker-compose up -d
Starting digicert-pqc-docker_pqc_1 ... done
Félicitations ! Le conteneur de la boîte à outils dockerisés du PQC est opérationnel.
Pour accéder à l'environnement du conteneur et commencer à expérimenter, consultez la page Entrer dans le conteneur.
Pour expérimenter les scripts de démonstration inclus et l'application OpenSSL modifiée, vous devez d'abord entrer dans l'environnement du conteneur.
Utilisez docker-compose exec
pour démarrer une session de dépistage à l'intérieur du conteneur en cours d'exécution.
docker-compose exec pqc /bin/bash
La première fois que vous entrez dans le conteneur, vous vous trouvez dans le répertoire /app. Ce répertoire contient l'ensemble des outils et des ressources complémentaires PQC. Le tableau suivant décrit les sous-répertoires et les fichiers importants qui se trouvent dans le répertoire /app.
Répertoire/fichier | Description |
---|---|
digicert-pqc/ | Répertoire principal de la boîte à outils. |
certs/ | Répertoire pour stocker les certificats générés. |
connector/ | ISARA Catalyst OpenSSL Connector resources. |
demo/ | Scripts et ressources de démonstration. |
certs/ | Répertoire pour stocker les certificats de démonstration générés. |
configs/ | Contient les fichiers de configuration des certificats qui sont utilisés lors de la génération des certificats de démonstration. |
demo.html | Fichier HTML qui peut être servi via le script run_server.sh lorsqu'il est exécuté en mode serveur web. |
cert_gen_demo.sh |
Génère et teste une chaîne complète de certificats à sécurité quantique à l'aide de fichiers de configuration situés dans /app/digicert-pqc/demo/configs. Consultez la page Générer des certificats de démonstration. |
run_client.sh |
Se connecte à un s_server en cours d'exécution en utilisant l'utilitaire s_client d'OpenSSL pour tester la fonctionnalité du certificat. Consultez la page Mode de base : Connexion à l'aide du script run_client.sh.. |
run_server.sh |
Démarre un serveur web de base en utilisant l'utilitaire s_server OpenSSL et charge les certificats situés dans /app/digicert-pqc/demo/certs. Consultez la page Démarrer un serveur de démo. |
pqpki-openssl-1.0.2r/ | OpenSSL compilé version 1.0.2r modifié en utilisant le correcteur ISARA OpenSSL Connector. |
ressources/ | Fichiers de ressources supplémentaires de la boîte à outils PQC. |
Pour personnaliser les valeurs des champs du certificat, modifiez les fichiers de configuration du certificat (situés dans /app/digicert-pqc/demo/configs).
Pour générer une chaîne de certificats complète résistants aux menaces quantiques, utilisez le script cert_gen_demo.sh
(situé dans /app/digicert-pqc/demo). Une fois exécuté, voici ce qui se passe :
Avant de générer des certificats de démonstration, assurez-vous que vous êtes dans le répertoire /app/digicert-pqc/demo.
Puis, exécutez le script.
cd /app/digicert-pqc/demo
./cert_gen_demo.sh
Le résultat suivant s'affichera :
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!!
Pour tester les certificats de démo générés, exécutez le script run_server.sh
. Ce script peut être exécuté selon l'un des deux modes suivants : de base ou HTTP.
http
facultatif.http
facultatif.Mode | Commande | Description |
---|---|---|
de base |
./run_server.sh
|
Démarre un s_server OpenSSL qui accepte les connexions utilisant l'utilitaire s_client OpenSSL. |
HTTP |
./run_server.sh http
|
Démarre un s_server OpenSSL qui accepte les connexions HTTPS sur le port 443. |
Pour arrêter une connexion s_server, dans la fenêtre du terminal qui exécute le serveur, appuyez sur CTRL+C.
Avant de démarrer un serveur de démonstration en mode de base, assurez-vous que vous êtes dans le répertoire /app/digicert-pqc/demo et que vous avez généré les certificats de démonstration.
Puis, exécutez le script.
./run_server.sh
Le résultat suivant s'affichera :
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT
L'utilitaire s_server fonctionne désormais en mode de base et peut accepter des connexions via s_client. Pour vous connecter à un serveur de démonstration en cours d'exécution, consultez la page Mode de base : Connexion à l'aide du script run_client.sh.
Avant de démarrer un serveur de démonstration en mode HTTP, assurez-vous que vous êtes dans le répertoire /app/digicert-pqc/demo et que vous avez généré les certificats de démonstration.
Ensuite, exécutez le script et incluez l'argument http
.
./run_server.sh http
Le résultat suivant s'affichera :
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT
L'utilitaire s_server fonctionne désormais en mode HTTP et peut accepter des connexions via HTTPS sur le port 443. Pour vous connecter à un serveur de démonstration en cours d'exécution, consultez la page Connexion à l’aide de la commande cURL.
Après avoir exécuté le script run_server.sh
pour lancer un serveur de démonstration, vous êtes prêt à vous y connecter et à tester la chaîne de certificats de démonstration.
Votre connexion au serveur de démonstration en cours d'exécution dépend du mode utilisé pour démarrer le serveur.
Le script run_client.sh
utilise l'utilitaire s_client OpenSSL pour se connecter à un s_server en cours d'exécution. Avant d'exécuter ce script, assurez-vous que vous avez lancé un s_server en exécutant le script run_server.sh
en mode de base. Consultez la page Démarrer un serveur en mode de base.
Avec un mode de base actif s_server en cours d'exécution dans l'une de vos fenêtres du point de terminaison, ouvrez une nouvelle fenêtre du point de terminaison. Dans la nouvelle fenêtre, démarrez une autre session de dépistage avec docker-compose exec
.
cd [path/to/dir/]digicert-pqc-docker
docker-compose exec pqc /bin/bash
Naviguez dans le répertoire de démonstration et exécutez le script run_client.sh
.
cd /app/digicert-pqc/demo
./run_client.sh
Le résultat suivant s'affichera :
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)
---
Et dans votre autre fenêtre du point de terminaison avec le s_server actif en cours d'exécution, le résultat suivant s'affichera :
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
Pour utiliser la commande cURL afin de se connecter à un s_server en cours d'exécution, assurez-vous que vous avez lancé un s_server en mode HTTP. Consultez la page Démarrer un serveur en mode HTTP.
Avec un serveur de démonstration actif fonctionnant en mode HTTP dans l'une de vos fenêtres du point de terminaison, la première chose à faire est d'ouvrir une nouvelle fenêtre de point de terminaison. Dans la nouvelle fenêtre, démarrez une autre session de dépistage avec docker-compose exec
.
cd [path/to/dir/]digicert-pqc-docker
docker-compose exec pqc /bin/bash
À présent, connectez-vous au serveur en cours d'exécution à l'aide de la commande cURL. Les certificats de démonstration que vous avez générés sont auto-signés et déclenchent un avertissement de non-fiabilité du certificat. Pour ignorer ces avertissements, vous devez inclure le commutateur -k
.
curl -k https://digicert.pqc/demo.html
Le résultat suivant s'affichera :
<html>
<head></head>
<body>
<h1>Hello world! PQC FUTURE IS HERE!</h1>
</body>
</html>
Et dans votre autre fenêtre du point de terminaison avec le s_server actif en cours d'exécution, le résultat suivant s'affichera :
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
Félicitations ! Vous avez configuré et testé avec succès votre environnement de boîte à outils dockerisés PQC. Vous pouvez expérimenter librement la création de certificats et l'établissement de connexions résistantes aux menaces quantiques.