Сбой QSslSocket :: startServerEncryption с & quot; PEM_READ_BIO_PRIVATEKEY: неверный пароль прочитан & quot;

Я создал сервер SSL, используя пример кода из документации Qt. Затем я подключаюсь к нему, используя 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");

Я создал cacert.pem а также privkey.pem используя эту команду в Ubuntu:

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

1

Решение

Ошибка состояла в том, что я не указал пароль для закрытого ключа (тот, который openssl попросил меня во время создания сертификата). Так что вместо

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

Я сейчас звоню

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

и это решает проблему.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]