我正在使用 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/