PQC 도구 키트 설정 가이드

이 가이드는 PQC 도구 키트에 대해 설명합니다. DigiCert PQC Docker화된 도구 키트 설정에 대한 설명은 PQC Docker화된 도구 키트 가이드를 참조하십시오.

소개

DigiCert의 PQC(포스트퀀텀 암호화) 도구 키트는 하이브리드 TLS 인증서를 만들기 위해 필요한 모든 것을 포함합니다. 이 하이브리드 인증서는 전통적 암호화 알고리즘을 연결하여 포스트퀀텀 암호화 알고리즘을 사용할 것입니다. 이전 버전과의 호환성을 유지하면서도 포스트퀀텀 하이브리드 TLS 인증서의 배포의 가능성을 테스트할 수 있게 합니다.

이 첫 번째 반복에는 포스트퀀텀 암호화 알고리즘이 타원형 곡선 암호화 알고리즘과 연결되어 있습니다.

이 설정 가이드는 DigiCert PQC 도구 키드를 사용하는 방법을 안내합니다.

  • ISARA PQC 패치를 OpenSSL 소스 파일에 적용합니다.
  • 수정된 OpenSSL 프로그램을 컴파일합니다.
  • 포스트퀀텀 암호화 키를 생성합니다.
  • 루트, 중간 및 서버 인증서를 포함하여 전체 하이브리드 인증서 체인을 만듭니다.
  • OpenSSL의 s_servers_client 유티리티를 사용하여 인증서를 테스트합니다.

DigiCert PQC 도구 키트는 모든 Secure Site Pro 고객에게 다운로드 가능합니다. 각 Secure Site Pro 인증서에 포함된 사항에 대해 자세히 알아봅니다.

PQC 도구 키트 콘텐츠

DigiCert PQC 도구 키트는 다음 파일을 포함합니다:

  • ISARA Catalyst OpenSSL Connector
  • 수정된 openssl.cnf
  • 인증서 구성 파일
  • 예제 하이브리드 인증서 체인

사전 요구 사항

이 가이드를 사용하기 전에 다음 사전 요구 사항을 충족하는지 확인합니다.

  • DigiCert PQC 도구 키트 리소스 파일에 액세스
  • 64비트 Ubuntu 16.04 이상(이 가이드는 Ubuntu 18.04 LTS를 사용하여 작성됨)
  • 루트 이외의 사용자로 sudo에 액세스 가능

시스템 또는 프로덕션 환경을 문제에서 보호하려면 샌드박스 또는 가상 환경을 사용하여 다음 단계를 따르는 것이 좋습니다.

환경을 준비

패치 파일을 준비하기 전에 환경을 준비합니다.

먼저 필요한 종속성 및 도구를 설치합니다.

bash
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install curl unzip make cmake gcc wget zlib1g-dev libjansson-dev

다음으로 소스 파일 및 도구 키트 리소스를 다운로드 및 컴파일할 수 있는 디렉터리 구조를 만듭니다.

bash
mkdir -p /app/digicert-pqc/connector
mkdir -p /app/digicert-pqc/certs/configs
mkdir /app/resources

다운로드 및 도구 키트 압축 풀기

이제 DigiCert PQC 도구 키트를 다운로드하고 콘텐츠를 압축을 풉니다.

PQC 도구 키트 다운로드

  1. CertCentral 계정에 로그인

  2. 사이드바 메뉴에서 인증서 > 주문을 클릭합니다.

  3. 주문 페이지에서 Secure Site Pro 인증서 주문을 찾고 주문 번호를 클릭합니다.

  4. 인증서의 주문 상세 정보 페이지에서 PQC 도구 키트를 클릭합니다.

  5. PQC(포스트퀀텀 암호화) 페이지에서 ISARA PQC 도구 키트 다운로드를 클릭하고 도구 키트를 /app/resources 디렉터리에 저장합니다.

PQC 도구 키트 파일 압축 풀기

다음으로 도구 키트에서 콘텐츠를 압축을 풉니다.

bash
cd /app/resources
unzip ./DigiCert_PQC_Toolkit.zip

PQC 도구 키트는 ISARA OpenSSL Connector 압축 파일을 포함합니다. 이것을 /app/digicert-pqc/connector에 압축을 풉니다.

bash
cd /app/digicert-pqc/connector
tar xzvf /app/resources/digicert-pqc-toolkit_2019-07-26/openssl_connector-Linux-2019-05-27.tgz

OpenSSL 패치 및 컴파일

환경을 설정하고 모든 파일을 압축을 푼 후에 OpenSSL을 패치하고 컴파일합니다.

시작하려면 OpenSSL 버전 1.0.2r을 /app/resources 디렉터리에 다운로드합니다.

bash
cd /app/resources
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2r.tar.gz

다음으로 소스 파일을 /app/digicert-pqc 디렉터리에 압축을 풉니다.

bash
cd /app/digicert-pqc
tar xzvf /app/resources/openssl-1.0.2r.tar.gz

이제 ISARA OpenSSL 패치를 압축을 푼 소스 파일에 적용합니다. 이로써 OpenSSL이 퀀텀 컴퓨터에 대해 안전한 암호화 알고리즘을 생성 및 해석하는 OpenSSL에 필요한 모든 수정 사항을 만들어졌습니다.

bash
cd openssl-1.0.2r/
patch -p2 < ../connector/OpenSSL_1_0_2r_ISARA.patch

패치가 완료된 후에 기존 openssl.cnf 파일을 도구 키트의 수정된 버전으로 바꿉니다. 이 수정된 구성 파일은 ISARA OpenSSL IQREngine을 가리키는 동적 엔진 엔트리를 포함합니다.

bash
cp /app/resources/digicert-pqc-toolkit_2019-07-26/openssl.cnf ./apps

이제 수정된 구성 파일을 편집하여 ISARA OpenSSL IQREngine의 위치를 가리키게 합니다.

  1. 선호하는 텍스트 편집기에서 openssl.cnf 파일을 엽니다.

bash
vi ./apps/openssl.cnf
  1. 32번 줄에서 dynamic_path 항목을 찾습니다.

  2. 이 항목을 다음으로 변경합니다.

bash
dynamic_path = /app/digicert-pqc/connector/lib/libiqre_engine.so
  1. 파일을 저장하고 닫습니다.

공유 OpenSSL 라이브러리는 만드는 것이므로 소스 파일을 컴파일하기 전에 비표준 경로를 구성해야 합니다.

bash
./config --prefix=/app/digicert-pqc/pqpki-openssl-1.0.2r --openssldir=/app/digicert-pqc/pqpki-openssl-1.0.2r shared

이제 아래 각 명령을 한 번에 하나씩 실행하여 수정된 소스 파일을 컴파일합니다.

bash
make depend
make all
sudo make install

수정한 OpenSSL 소스를 컴파일한 후에 LD_LIBRARY_PATH 변수를 사용하여 두 개의 동적 라이브러리 위치를 지정합니다. 이것은 시스템에 수정한 OpenSSL 공유 라이브러리와 퀀텀 컴퓨터에 대해 안전한 암호화 알고리즘을 처리하는 데 사용되는 ISARA PQC 엔진 모두를 찾는 데 사용됩니다.

bash
export LD_LIBRARY_PATH=/app/digicert-pqc/pqpki-openssl-1.0.2r:/app/digicert-pqc/connector/lib

시스템이 이미 LD_LIBRARY_PATH 변수를 사용하는 경우, :$LD_LIBRARY_PATH를 위의 명령에 추가하여 기존 경로를 제거하지 않고 새 경로를 추가할 수 있습니다.

하이브리드 인증서 체인 만들기

이제 퀀텀 컴퓨터에 대해 안전한 암호화 알고리즘을 생성하고 디코드할 수 있는 OpenSSL 프로그램이 있습니다. 기능을 테스트할 수 있도록 완전한 하이브리드 인증서 체인(루트, 중간 및 서버 인증서)을 만들 준비가 되었습니다.

먼저 PQC 도구 키트에 포함된 인증서 구성 파일을 /app/digicert-pqc/certs 디렉터리에 복사합니다. 이 구성 파일은 각 인증서 요청 및 인증서를 생성하기 위해 필요한 모든 정보를 포함합니다.

bash
cd /app/digicert-pqc/certs
cp /app/resources/digicert-pqc-toolkit_2019-07-26/certificates/root_req.cfg ./configs
cp /app/resources/digicert-pqc-toolkit_2019-07-26/certificates/intermediate_req.cfg ./configs
cp /app/resources/digicert-pqc-toolkit_2019-07-26/certificates/server_req.cfg ./configs

개인 키 및 공개 키 생성

다음으로 체인의 각 인증서에 대한 퀀텀 컴퓨터에 대해 안전한 개인 키를 만들고 반드시 수정한 OpenSSL 프로그램 및 IRQEngine을 사용하십시오.

루트 개인 키:

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl genpkey -engine IQREngine -algorithm xmss -pkeyopt tree_height:10 -pkeyopt strategy:cpu_constrained -pkeyopt state_filename:xmss_catalyst_mixed_chain_root_private_key_state.bin -out xmss_catalyst_mixed_chain_root_private_key.pem

중간 개인 키:

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl genpkey -engine IQREngine -algorithm dilithium -pkeyopt parameter_set:A -out dilithium_catalyst_mixed_chain_intermediate_private_key.pem

서버 개인 키:

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl genpkey -engine IQREngine -algorithm rainbow -pkeyopt parameter_set:A -out rainbow_catalyst_mixed_chain_private_key.pem

각 인증서의 개인 키를 만들었으면 공개 키를 추출합니다.

루트 공개 키:

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl pkey -engine IQREngine -in xmss_catalyst_mixed_chain_root_private_key.pem -pubout -out xmss_catalyst_mixed_chain_root_public_key.pem

중간 공개 키:

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl pkey -engine IQREngine -in dilithium_catalyst_mixed_chain_intermediate_private_key.pem -pubout -out dilithium_catalyst_mixed_chain_intermediate_public_key.pem

서버 공개 키:

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl pkey -engine IQREngine -in rainbow_catalyst_mixed_chain_private_key.pem -pubout -out rainbow_catalyst_mixed_chain_public_key.pem

ECC 혼합 체인 인증서에 대한 커브를 선택합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl ecparam -out ecdsa_catalyst_mixed_chain_parameters.pem -name secp384r1

CSR 만들기 및 인증서 생성

암호화 키를 생성했으면 체인의 각 인증서에 대한 CSR을 만들고 루트, 중간 및 서버 인증서를 생성할 준비가 되었습니다.

먼전 루트 발급자에 대한 CSR을 만듭니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl req -new -newkey ec:ecdsa_catalyst_mixed_chain_parameters.pem -keyout ecdsa_without_xmss_catalyst_mixed_chain_root_private_key.pem -out ecdsa_without_xmss_x509_catalyst_mixed_chain_root_req.pem -config ./configs/root_req.cfg -nodes

다음으로 루트에 대한 자체 서명 X509 인증서를 만들어야 합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509 -req -set_serial 8026 -extfile ./configs/root_req.cfg -in ecdsa_without_xmss_x509_catalyst_mixed_chain_root_req.pem -signkey ecdsa_without_xmss_catalyst_mixed_chain_root_private_key.pem -out ecdsa_without_xmss_x509_catalyst_mixed_chain_root_certificate.pem

다음으로 루트 인증서를 하이브리드 루트 인증서로 확장합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509QSDirectExtend -engine /app/digicert-pqc/connector/lib/libiqre_engine.so -x509in ecdsa_without_xmss_x509_catalyst_mixed_chain_root_certificate.pem -x509out xmss_ecdsa_x509_catalyst_mixed_chain_root_certificate.pem -privin ecdsa_without_xmss_catalyst_mixed_chain_root_private_key.pem -pubqs xmss_catalyst_mixed_chain_root_public_key.pem -privqs xmss_catalyst_mixed_chain_root_private_key.pem::xmss_catalyst_mixed_chain_root_private_key_state.bin -privqs_engine

이제 중간 인증서에 대한 CSR을 만들 수 있습니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl req -new -newkey ec:ecdsa_catalyst_mixed_chain_parameters.pem -keyout ecdsa_without_dilithium_catalyst_mixed_chain_intermediate_private_key.pem -out ecdsa_without_dilithium_x509_catalyst_mixed_chain_intermediate_req.pem -config ./configs/intermediate_req.cfg -nodes

중간 인증서 CSR을 하이브리드 CSR로 확장합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl reqQSExtend -engine /app/digicert-pqc/connector/lib/libiqre_engine.so -reqin ecdsa_without_dilithium_x509_catalyst_mixed_chain_intermediate_req.pem -reqout dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_req.pem -privin ecdsa_without_dilithium_catalyst_mixed_chain_intermediate_private_key.pem -pubqs dilithium_catalyst_mixed_chain_intermediate_public_key.pem -privqs dilithium_catalyst_mixed_chain_intermediate_private_key.pem

다음으로 중간 인증서를 생성합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509 -req -set_serial 8014 -extfile ./configs/intermediate_req.cfg -in dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_req.pem -CA xmss_ecdsa_x509_catalyst_mixed_chain_root_certificate.pem -CAkey ecdsa_without_xmss_catalyst_mixed_chain_root_private_key.pem -out ecdsa_without_dilithium_x509_catalyst_mixed_chain_intermediate_certificate.pem

중간 인증서를 하이브리드 중간 인증서로 확장합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509QSExtend -engine /app/digicert-pqc/connector/lib/libiqre_engine.so -x509in ecdsa_without_dilithium_x509_catalyst_mixed_chain_intermediate_certificate.pem -x509out dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_certificate.pem -reqin dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_req.pem -privqs xmss_catalyst_mixed_chain_root_private_key.pem::xmss_catalyst_mixed_chain_root_private_key_state.bin -privqs_engine

이제 루트 및 중간 인증서를 생성했으면 다음 단계는 서버 인증서를 생성합니다.

먼저 서버 인증서에 대한 CSR을 만들어야 합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl req -new -newkey ec:ecdsa_catalyst_mixed_chain_parameters.pem -keyout ecdsa_without_rainbow_catalyst_mixed_chain_private_key.pem -out ecdsa_without_rainbow_x509_catalyst_mixed_chain_req.pem -config ./configs/server_req.cfg -nodes

다음으로 서버 인증서 CSR을 하이브리드 CSR로 확장합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl reqQSExtend -engine /app/digicert-pqc/connector/lib/libiqre_engine.so -reqin ecdsa_without_rainbow_x509_catalyst_mixed_chain_req.pem -reqout rainbow_ecdsa_x509_catalyst_mixed_chain_server_req.pem -privin ecdsa_without_rainbow_catalyst_mixed_chain_private_key.pem -pubqs rainbow_catalyst_mixed_chain_public_key.pem -privqs rainbow_catalyst_mixed_chain_private_key.pem

그 다음에 서버 인증서를 생성할 수 있습니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509 -req -set_serial 8015 -req -extfile ./configs/server_req.cfg -in rainbow_ecdsa_x509_catalyst_mixed_chain_server_req.pem -CA dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_certificate.pem -CAkey ecdsa_without_dilithium_catalyst_mixed_chain_intermediate_private_key.pem -out ecdsa_without_rainbow_x509_catalyst_mixed_chain_certificate.pem

마지막으로 서버 인증서를 하이브리드 서버 인증서로 확장합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509QSExtend -engine /app/digicert-pqc/connector/lib/libiqre_engine.so -x509in ecdsa_without_rainbow_x509_catalyst_mixed_chain_certificate.pem -x509out rainbow_ecdsa_x509_catalyst_mixed_chain_server_certificate.pem -reqin rainbow_ecdsa_x509_catalyst_mixed_chain_server_req.pem -privqs dilithium_catalyst_mixed_chain_intermediate_private_key.pem

인증서 체인 확인

모든 인증서를 만들었으면 작동하는 하이브리드 인증서 체인인지 확인할 준비가 되었습니다.

먼저, 레거시 암호화를 사용하여 하이브리드 체인이 작동하는지 확인합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl verify -engine IQREngine -verbose -CAfile xmss_ecdsa_x509_catalyst_mixed_chain_root_certificate.pem -untrusted dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_certificate.pem rainbow_ecdsa_x509_catalyst_mixed_chain_server_certificate.pem

다음과 같은 결과가 있어야 합니다.

bash
engine "IQREngine" set.
rainbow_ecdsa_x509_catalyst_mixed_chain_server_certificate.pem: OK

다음으로 퀀텀 컴퓨터에 대해 안전한 암호화를 사용하여 하이브리드 인증서 체인이 작동하는지 확인합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl x509QSVerify -engine /app/digicert-pqc/connector/lib/libiqre_engine.so -root xmss_ecdsa_x509_catalyst_mixed_chain_root_certificate.pem -untrusted dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_certificate.pem -cert rainbow_ecdsa_x509_catalyst_mixed_chain_server_certificate.pem

다음과 같은 결과가 있어야 합니다.

bash
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!!

그리고 모든 파일이 만들어졌는지 확인하기 위해 ls 명령을 실행합니다. 성공적인 경우, 다음과 같은 결과를 확인할 수 있습니다.

bash
configs
dilithium_catalyst_mixed_chain_intermediate_private_key.pem
dilithium_catalyst_mixed_chain_intermediate_public_key.pem
dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_certificate.pem
dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_req.pem
ecdsa_catalyst_mixed_chain_parameters.pem
ecdsa_without_dilithium_catalyst_mixed_chain_intermediate_private_key.pem
ecdsa_without_dilithium_x509_catalyst_mixed_chain_intermediate_certificate.pem
ecdsa_without_dilithium_x509_catalyst_mixed_chain_intermediate_req.pem
ecdsa_without_rainbow_catalyst_mixed_chain_private_key.pem
ecdsa_without_rainbow_x509_catalyst_mixed_chain_certificate.pem
ecdsa_without_rainbow_x509_catalyst_mixed_chain_req.pem
ecdsa_without_xmss_catalyst_mixed_chain_root_private_key.pem
ecdsa_without_xmss_x509_catalyst_mixed_chain_root_certificate.pem
ecdsa_without_xmss_x509_catalyst_mixed_chain_root_req.pem
rainbow_catalyst_mixed_chain_private_key.pem
rainbow_catalyst_mixed_chain_public_key.pem
rainbow_ecdsa_x509_catalyst_mixed_chain_server_certificate.pem
rainbow_ecdsa_x509_catalyst_mixed_chain_server_req.pem
xmss_catalyst_mixed_chain_root_private_key.pem
xmss_catalyst_mixed_chain_root_private_key_state.bin
xmss_catalyst_mixed_chain_root_public_key.pem
xmss_ecdsa_x509_catalyst_mixed_chain_root_certificate.pem

s_server 및 s_client를 사용하여 인증서 체인을 테스트

퀀텀 컴퓨터에 대해 안전한 하이브리드 인증서 체인을 테스트하려면 OpenSSL의 s_servers_client 유틸리티를 사용합니다. 두 개 유틸리티를 동시에 사용하려면 두 개의 터미털 세션(한 개는 서버용 및 다른 한 개는 클라이언트용)을 시작합니다.

먼저 서버 인증서의 CN 값을 호스트 파일에 추가합니다.

bash
echo "$(hostname -I) digicert.pqc" | sudo tee -a /etc/hosts

다음으로 현재 디렉터리가 /app/digicert-pqc/certs인지 확인합니다.

bash
cd /app/digicert-pqc/certs

다음으로 시작한 터미널에서 서버를 시작합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl s_server -engine IQREngine -cert dilithium_ecdsa_x509_catalyst_mixed_chain_intermediate_certificate.pem -certform PEM -key dilithium_catalyst_mixed_chain_intermediate_private_key.pem -keyform PEM -debug -tls1_2

위 명령을 실행한 후에 다음 결과를 볼 수 있어야 합니다.

bash
engine "IQREngine" set.
Using default temp DH parameters
ACCEPT

다음으로 두 번째 터미털 창으로 전환한 후에 현재 디렉터리가 /app/digicert-pqc/certs인지 확인합니다.

bash
cd /app/digicert-pqc/certs

다음으로 s_client 유틸리티를 사용하여 실행 중인 서버에 연결합니다.

bash
/app/digicert-pqc/pqpki-openssl-1.0.2r/bin/openssl s_client -engine IQREngine -CAfile xmss_ecdsa_x509_catalyst_mixed_chain_root_certificate.pem -showcerts -tls1_2 -cipher 'ECDHE-NHDH-DILM-AES256-GCM-SHA384'

모든 것이 적합하게 구성된 경우, s_client 유틸리티를 실행하는 터미널 창에서 다음 결과를 볼 수 있어야 합니다.

bash
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)
---

s_server 유틸리티를 실행하는 터미널 창에서 다음 결과를 볼 수 있어야 합니다.

bash
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

축하합니다! 성공적으로 DigiCert의 PQC 도구 키트 및 ISARA Catalyst OpenSSL Connector 엔진을 사용하여 퀀텀 컴퓨터에 대해 안전한 하이브리드 인증서 체인을 만들었습니다.