boost asio exception:use_private_key_file:键值不匹配

时间:2015-06-18 21:15:38

标签: c++ ssl boost openssl boost-asio

我正在使用example server from 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.key openssl req -noout -modulus -in server.csr openssl x509 -noout -modulus -in server.crt

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

创建了crt文件
openssl x509 -req -days 3650 -in server.csr -signkey ../sslca/ca.key -out server.crt

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

1 个答案:

答案 0 :(得分:1)

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

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

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