我使用的example server from boost asio,而我无法运行,并收到此错误,提高ASIO例外:use_private_key_file:键值不匹配
异常: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
建议?我的意思是如果不匹配密钥和证书是一个问题,那么我的签名方法是错误的!我究竟做错了什么?
您可能希望使用“证书”与“钥匙”更加小心。一个证书_contains_一个密钥对,但它不一样。传统上,公钥被认为是证书的一部分。私钥是什么应该被称为密钥,但私钥(显然)需要匹配公钥(因此证书)或它不能工作。不知道这是否会有所帮助,但将它放在那里,因为你的措辞留有足够的空间来模糊 – sehe
*“传统上,公钥被认为是证书的一部分......”* - 一个X.509证书将公钥绑定到身份。这是它的人生目标。公钥一直存在...... – jww
@jww先生,请你解释一下吗?我真的需要帮助,不需要报价。我在做什么错了? –