gpt4 book ai didi

c++ - openssl 客户端如何信任服务器的自签名证书

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:48 26 4
gpt4 key购买 nike

我正在设置一个 C++ 类来处理 tls 连接(客户端和服务器)。除了 tls 握手外,它都有效:我已经生成了我的自签名根证书并用它签署了 rsa 服务器 key 。但是我收到一个未知 CA 的客户端错误

生成自签名CA的脚本(CA文件和CA.pem文件)

openssl req -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout CA -out CA.pem

用于生成和签署服务器 key 的脚本( key 文件和 key.pem 文件)

read -p "key and cert name :" x

openssl genrsa -out $(echo $x) 2048
openssl req -new -key $(echo $x) -out $(echo $x).csr
openssl x509 -req -in $(echo $x).csr -CA CA/CA.pem -CAkey CA/CA -CAcreateserial -out $(echo $x).pem -days 3650 -sha256

然后我使用 SSL_CTX_use_certificate_file 将 CA.pem 传递给客户端,使用 SSL_CTX_use_PrivateKey_file 将 key 传递给服务器,使用 SSL_CTX_use_certificate_file

传递 key.pem

客户端处于 SSL_VERIFY_PEER 模式,服务器处于 SSL_VERIFY_NONE 模式,因此只有客户端检查服务器证书。

由于服务器 key 是使用 CA 和客户端信任 CA.pem 签名的,它应该可以工作,但是当握手协商完成时,我在 wireshark 中得到了这个(从客户端到服务器的消息):警报级别致命,描述:未知 CA

最佳答案

如果您阅读 OpenSSL 的文档,对于客户端 SSL_CTX_use_certificate_file安装客户端证书。它没有指定可用于验证证书的可信 CA 列表。

为此,在客户端,您要使用 SSL_CTX_load_verify_locations :

SSL_CTX_load_verify_locations() specifies the locations for ctx, at which CA certificates for verification purposes are located.

关于c++ - openssl 客户端如何信任服务器的自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com