Esta guía está diseñada para el kit de herramientas dockerizadas de PQC. Para obtener instrucciones sobre cómo configurar el kit de herramientas PQC de DigiCert, consulte la Guía de configuración del kit de herramientas de PQC.
El kit de herramientas dockerizadas criptográfico poscuántico (PQC) de DigiCert tiene todo lo necesario para configurar de manera rápida un entorno Docker en el que puede crear un certificado TLS híbrido. Este certificado híbrido usa un algoritmo criptográfico poscuántico junto con un algoritmo criptográfico clásico, lo que le permitirá probar la viabilidad de implementar certificados TLS híbridos poscuánticos, al mismo tiempo que también mantiene una compatibilidad con versiones anteriores.
Esta guía lo guiará en el uso del kit de herramientas dockerizadas PQC de DigiCert para lo siguiente.
docker-compose
.s_server
y s_client
de OpenSSL.El kit de herramientas dockerizadas PQC de DigiCert está disponible para su descarga para todos los clientes Secure Site Pro. Conozca más sobre qué se incluye con cada certificado Secure Site Pro.
El kit de herramientas dockerizadas PQC de DigiCert tiene estos archivos:
Antes de usar esta guía, vele por satisfacer estos requisitos previos:
Antes de descargar el kit de herramientas dockerizadas PQC, confirme que el Motor Docker y Docker Compose estén instalados en su sistema.
Si no reconoce estos comandos, Docker no está instalado en su sistema. Consulte Requisitos previos para obtener información sobre la instalación de Docker en su sistema.
Abra una ventana terminal y ejecute docker --version
y docker-compose --version
. Esto debería devolver un resultado parecido al que se muestra debajo.
$ docker --version
Docker version 18.03.0-ce, build 0520e24
$ docker-compose --version
docker-compose version 1.20.1, build 5d8c71b
Abra una ventana del Símbolo del sistema o de PowerShell y ejecute docker --version
. Esto debería devolver un resultado parecido al que se muestra debajo.
> docker --version
Docker version 18.03.0-ce, build 0520e24
Una vez que haya descargado y descomprimido el kit de herramientas dockerizadas PQC, está listo para construir el contenedor usando docker-compose
.
Abra una ventana terminal y navegue hasta el directorio descomprimido digicert-pqc-docker.
cd [path/to/dir/]digicert-pqc-docker
Luego construya el contenedor del kit de herramientas de PQC. Esto descarga todas las dependencias de imágenes y configura el entorno del contenedor.
Si esta es la primera vez que ejecuta el comando, podría tener que esperar a que la imagen Ubuntu que se requiere se descargue de Docker Hub.
docker-compose build
Ya está listo para iniciar el contenedor del kit de herramientas de PQC en modo separado.
docker-compose up -d
Starting digicert-pqc-docker_pqc_1 ... done
¡Felicitaciones! El contenedor del kit de herramientas dockerizadas de PQC está instalado y funcionando.
Para acceder al entorno del contenedor y comenzar a experimentar con él, consulte Ingresar en el contenedor.
Para experimentar con los comandos de demostración que se incluyen y con la aplicación OpenSSL modificada, en primer lugar, debe ingresar en el entorno del contenedor.
Use docker-compose exec
para iniciar una sesión bash dentro del contenedor que se está ejecutando.
docker-compose exec pqc /bin/bash
Cuando ingrese por primera vez en el contenedor, estará en el directorio /app. Este directorio alberga la totalidad del kit de herramientas de PQC y de los recursos complementarios. En el siguiente cuadro se describen los subdirectorios y los archivos importantes que están ubicados en el directorio /app.
Directorio/archivo | Descripción |
---|---|
digicert-pqc/ | Directorio de kit de herramientas primario. |
certs/ | Directorio para almacenar los certificados que se generan. |
connector/ | Recursos de conector OpenSSL catalizador ISARA. |
demo/ | Dominios y recursos de demostración. |
certs/ | Directorio para almacenar los certificados de demostración que se generen. |
configs/ | Tiene archivos de configuración de certificados que se usan cuando se generan certificados de demostración. |
demo.html | Archivo HTML que se puede usar por medio del comando run_server.sh cuando se ejecuta en el modo servidor web. |
cert_gen_demo.sh |
Genera y prueba una cadena de certificado segura cuántica completa usando los archivos de configuración que se ubiquen en /app/digicert-pqc/demo/configs. Consulte Generar certificados de demostración. |
run_client.sh |
Se conecta a un s_server que se está ejecutando mediante la utilidad s_client de OpenSSL para probar la funcionalidad de los certificados. Consulte Modo básico: Conectarse mediante el comando run_client.sh. |
run_server.sh |
Inicia un servidor web básico mediante la utilidad s_server de OpenSSL y carga los certificados que se ubiquen en /app/digicert-pqc/demo/certs. Consulte Iniciar un servidor de demostración. |
pqpki-openssl-1.0.2r/ | OpenSSL compilado versión 1.0.2r modificado mediante la revisión conector OpenSSL ISARA. |
resources/ | Archivos de recursos del kit de herramientas de PQC adicionales. |
Para personalizar cualesquiera de los valores del campo certificados, modifique los archivos de configuración del certificado (ubicados en /app/digicert-pqc/demo/configs).
Para generar una cadena de certificados segura cuántica completa, use el comando cert_gen_demo.sh
(ubicado en /app/digicert-pqc/demo). Cuando lo ejecute, sucederá lo siguiente:
Antes de generar certificados de demostración, vele por estar en el directorio /app/digicert-pqc/demo.
Luego ejecute el comando.
cd /app/digicert-pqc/demo
./cert_gen_demo.sh
Verá este resultado:
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!!
Para probar los certificados de demostración que se generaron, ejecute el comando run_server.sh
. Puede ejecutar este comando en uno de dos modos: básico o HTTP.
http
opcional.http
opcional.Modo | Comando | Descripción |
---|---|---|
Básico |
./run_server.sh
|
Inicia un s_server OpenSSL que acepta conexiones mediante la utilidad s_client OpenSSL. |
HTTP |
./run_server.sh http
|
Inicia un s_server OpenSSL que acepta conexiones HTTPS en el puerto 443. |
Para detener un s_server que se está ejecutando,, en la ventana terminal que está ejecutando el servidor, presione CTRL+C.
Antes de iniciar un servidor de demostración en modo básico, compruebe que está en el directorio /app/digicert-pqc/demo y que ha creado los certificados de demostración.
Luego ejecute el comando.
./run_server.sh
Verá este resultado:
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT
Ahora la utilidad s_server se está ejecutando en modo básico y puede aceptar conexiones a través de s_client. Para conectarse a un servidor de demostración que se está ejecutando, consulte Modo básico: Conectarse mediante el comando run_client.sh.
Antes de iniciar un servidor de demostración en modo HTTP, compruebe que está en el directorio /app/digicert-pqc/demo y que ha creado los certificados de demostración.
Luego ejecute el comando e incluya el argumento http
.
./run_server.sh http
Verá este resultado:
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT
Ahora la utilidad s_server se está ejecutando en modo HTTP y puede aceptar conexiones a través de HTTPS en el puerto 443. Para conectarse a un servidor de demostración que se está ejecutando, consulte Conectarse mediante cURL.
Luego de ejecutar el comando run_server.sh
para iniciar un servidor de demostración, estará listo para conectarse a él y probar la cadena de certificados de demostración.
La forma en la cual se conecta al servidor de demostración que se está ejecutando depende del modo que usó para iniciar el servidor.
El comando run_client.sh
usa la utilidad s_client OpenSSL para conectarse a un s_server que se está ejecutando. Antes de ejecutar este comando, compruebe que inició un s_server ejecutando el comando run_server.sh
en modo básico. Consulte Iniciar un servidor en modo básico.
Con un s_server que se está ejecutando en modo básico en una de sus ventanas terminales, abra una nueva ventana terminal. En la nueva ventana, inicie otra sesión bash con docker-compose exec
.
cd [path/to/dir/]digicert-pqc-docker
docker-compose exec pqc /bin/bash
Navegue hasta el directorio de demostración y ejecute el comando run_client.sh
.
cd /app/digicert-pqc/demo
./run_client.sh
Verá este resultado:
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)
---
Y en su otra ventana terminal con el s_server activo que se está ejecutando, verá este resultado:
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
Para usar cURL par aconectarse a un s_server que se está ejecutando,, compruebe que inició un s_server en modo HTTP. Consulte Iniciar un servidor en modo HTTP.
Con un servidor de demostración activo que se está ejecutando en modo HTTP en una de sus ventanas terminales, lo primero que debe hacer es abrir una nueva ventana terminal. En la nueva ventana, inicie otra sesión bash con docker-compose exec
.
cd [path/to/dir/]digicert-pqc-docker
docker-compose exec pqc /bin/bash
Ahora conéctese al servidor que se está ejecutando mediante cURL. Los certificados de demostración que generó tienen firma automática y generarán una advertencia de certificado no fiable. Para hacer caso omiso de estas advertencias, deberá incluir el interruptor -k
.
curl -k https://digicert.pqc/demo.html
Verá este resultado:
<html>
<head></head>
<body>
<h1>Hello world! PQC FUTURE IS HERE!</h1>
</body>
</html>
Y en su otra ventana terminal con el s_server activo que se está ejecutando, verá este resultado:
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
¡Felicitaciones! Ha logrado configurar y probar su entorno de kit de herramientas dockerizadas de PQC. Siéntase libre de experimentar con la creación de certificados y el establecimiento de conexiones seguras cuánticas.