找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3636

积分

0

好友

482

主题
发表于 1 小时前 | 查看: 3| 回复: 0

1. 使用 Docker 编译 OpenSSL 3.5.6

Dockerfile 如下:

# 基础镜像:使用 Red Hat Universal Base Image 9
FROM redhat/ubi9:latest

# Update packages
# 更新系统软件包
RUN dnf -y update && dnf upgrade -y

# Get build dependencies
# 安装编译依赖项
RUN dnf -y install perl-core zlib-devel kernel-headers make gcc wget

# Get all sources
# 获取 OpenSSL 源码
WORKDIR /tmp

RUN wget https://github.com/openssl/openssl/releases/download/openssl-3.5.6/openssl-3.5.6.tar.gz

RUN tar -xvf openssl-3.5.6.tar.gz

# Build & install
# 编译并安装 OpenSSL
WORKDIR /tmp/openssl-3.5.6
RUN ./config --prefix=/opt/openssl --openssldir=/opt/openssl -Wl,-rpath=/opt/openssl/lib64 shared zlib
RUN make -j 4
RUN make install

# 容器启动时执行 openssl version 验证
CMD ["/opt/openssl/bin/openssl", "version"]

构建镜像(耗时较长):

docker build -t openssl356:ubi9 .

2. 本地直接编译

也可以选择本地编译,注意安装到自定义目录,避免与系统已有 OpenSSL 冲突。

wget https://github.com/openssl/openssl/releases/download/openssl-3.5.6/openssl-3.5.6.tar.gz
tar -xvf openssl-3.5.6.tar.gz
./config --prefix=/opt/openssl --openssldir=/opt/openssl -Wl,-rpath=/opt/openssl/lib64 shared zlib
make -j $(nproc)
make install

安装路径默认为 /opt/openssl/bin,后续命令均在该目录下执行。

3. 生成后量子测试证书

进入测试目录:

mkdir -p /opt/openssl/bin/test
cd /opt/openssl/bin/test

使用 ML-DSA-44 算法生成 CA 证书和私钥:

../openssl genpkey -algorithm ML-DSA-44 -out ca-key.pem
../openssl req -x509 -new -key ca-key.pem -days 3650 -out ca-cert.pem -subj "/CN=Post-Quantum-CA"

生成服务器端密钥与证书:

../openssl genpkey -algorithm ML-DSA-44 -out server-key.pem
../openssl req -new -key server-key.pem -out server-csr.pem -subj "/CN=localhost"
../openssl x509 -req -in ./server-csr.pem -CA ca-cert.pem  -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650
../openssl x509 -in ./server-cert.pem -noout -text

生成客户端密钥与证书:

../openssl genpkey -algorithm ML-DSA-44 -out client-key.pem
../openssl req -new -key client-key.pem -out client-csr.pem -subj "/CN=client"
../openssl x509 -req -in ./client-csr.pem -CA ca-cert.pem  -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 3650
../openssl x509 -in ./client-cert.pem -noout -text

4. 启动抓包并验证 TLS 1.3 后量子握手

先开启抓包(保存 pcap 文件):

tcpdump -i any port 4433 -w ./pqc.pcap

启动服务端,指定后量子算法组:

../openssl s_server -accept 4433 -cert server-cert.pem -key server-key.pem -CAfile ca-cert.pem -Verify 1 -groups SecP384r1MLKEM1024:MLKEM512:MLKEM768:MLKEM1024:SecP256r1MLKEM768:X25519MLKEM768 -state -verify_return_error

在另一个终端启动客户端:

../openssl s_client -connect localhost:4433 -cert client-cert.pem -key client-key.pem -CAfile ca-cert.pem -groups SecP384r1MLKEM1024:MLKEM512:MLKEM768:MLKEM1024:SecP256r1MLKEM768:X25519MLKEM768 -status -verify_return_error

握手完成后,可以通过 Wireshark 打开抓包文件 pqc.pcap 分析后量子密钥交换过程:

Wireshark抓包 Client Hello 握手信息,显示后量子支持的椭圆曲线组和key_share扩展

Wireshark抓包 Server Hello 握手信息,显示key_share扩展中的后量子密钥共享




上一篇:后量子密码实战解密:ML-KEM与ML-DSA如何护航Linux/OpenSSL
下一篇:Claude Code系统提示词:静态动态分离外的5大工程细节
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-5-26 03:21 , Processed in 0.616047 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表