c++ - boost asio 异常 : use_private_key_file: key values mismatch

标签 c++ ssl boost openssl boost-asio

我正在使用 example server from boost asio ,我无法运行它并收到此错误,

Exception: use_private_key_file: key values mismatch

除了 key 和端口,我在程序中绝对没有改变任何东西。

我愿意使用我自己的 key 权限,而且库中似乎有问题,不排除我可能做一些根本性的错误,所以请协助。

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

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");

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

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- 创建服务器 key 并使用授权 key 对其签名

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.key openssl req -noout -modulus -in server.csr openssl x509 -noout -modulus -in server.crt

并且前两个生成的 key 相同,而最后一个不同。我必须确认 crt 文件是使用创建的

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

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

最佳答案

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

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

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

关于c++ - boost asio 异常 : use_private_key_file: key values mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30925952/

相关文章:

c++ - Variadic 函数 - 确定返回类型

c++ - 内联函数返回不正确的结果

delphi - Google Chrome POST 破坏了此 SSL_read。有人有有效的代码吗?

ssl - SSL 非通配符证书是否适用于子文件夹/目录?

c++ - 如何检查 boost::deadline_timer 是否处于事件状态

boost - 为什么我们需要 boost::thread_specific_ptr?

C++:引用地址?

c++ - Windows SChannel 支持 CURL SFTP 吗?

c++ - 为什么 boost::ptr_list 使用底层 void *?

c++ - 如何使用 QStyledItemDelegate 在 QTreeWidget 中拥有不同高度的 QTreeWidgetItems?