提升 ASIO 异常:use_private_key_file:键值不匹配

boost asio exception: use_private_key_file: key values mismatch

本文关键字:file 键值 key 不匹配 提升 异常 use ASIO private      更新时间:2023-10-16

>我正在使用来自boost asio的示例服务器,但我无法运行它并收到此错误,

异常:use_private_key_file:键值不匹配

除了密钥和端口之外,我在程序中绝对没有更改任何内容。

愿意使用我自己的密钥权限,而且图书馆似乎存在问题,不排除我可能做一些根本性错误的事情,所以请协助。

在程序中,我使用以下行作为键:

context_.use_certificate_chain_file("../sslkeys/server.crt");
context_.use_private_key_file("../sslkeys/server.key", boost::asio::ssl::context::pem);
context_.use_tmp_dh_file("../sslkeys/dh512.pem");

为了创建这些密钥,我执行以下操作:

1-创建证书颁发机构(CA)

openssl genrsa -aes256 -out ca.key 4096
openssl req -new -x509 -extensions v3_ca -key ca.key -out ca.crt -days 36500

2-创建服务器密钥并使用授权密钥对其进行签名

openssl genrsa -des3 -out server.key 2048
openssl x509 -req -days 3650 -in server.csr -signkey ../sslca/ca.key -out server.crt
cp server.key server.key.secure
openssl rsa -in server.key.secure -out server.key
openssl dhparam -out dh512.pem 1024

现在,当我使用此配置运行服务器时,出现该错误...我做错了什么?

如果您需要任何其他信息,请询问。

编辑:

所以我按照命令的建议检查了按键:

openssl rsa -noout -modulus -in server.keyopenssl req -noout -modulus -in server.csropenssl x509 -noout -modulus -in server.crt

前两个产生相同的密钥,而最后一个则不同。我必须确认 crt 文件是使用

openssl x509 -req -days 3650 -in server.csr -signkey ../sslca/ca.key -out server.crt

建议?我的意思是,如果不匹配密钥和证书是一个问题,那么我的签名方法就是错误的!我做错了什么?

根据错误输出,您可以尝试的第一步是通过openssl命令确保您的证书与私钥匹配。可能会这样做,

openssl rsa -noout -modulus -in server.key
openssl req -noout -modulus -in server.csr
openssl x509 -noout -modulus -in server.crt

如果模数相同,这意味着文件匹配,则查看 boost 程序。否则,可能会出现文件混淆。