1

我使用 Qt 文档中的示例代码创建了一个 SSL 服务器。然后我使用QSslSocket::connectToHostEncrypted.

但是,服务器失败了,这在QSslSocket::errorString()

Cannot provide a certificate with no key, 
error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read

我使用以下代码设置证书和私钥:

serverSocket->setLocalCertificate("/home/user/Workspace/openssl/cacert.pem");
serverSocket->setPrivateKey("/home/user/Workspace/openssl/privkey.pem");

我在 Ubuntu 上创建cacert.pemprivkey.pem使用了这个命令:

openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 1825
4

1 回答 1

1

错误是因为我没有指定私钥的密码(openssl 在证书创建期间要求我输入的密码)。所以而不是

serverSocket->setPrivateKey("/home/user/Workspace/openssl/privkey.pem");

我现在打电话

serverSocket->setPrivateKey("/home/user/Workspace/openssl/privkey.pem", QSsl::Rsa, QSsl::Pem, "mypassword");

这解决了问题。

于 2013-01-06T18:37:30.583 回答