プロキシ サーバーを作成しています。http 部分は準備できていますが、https に問題があります。この方法で証明書と秘密鍵を作成しました(私が理解しているように、それなしでは機能しません):
OpenSSL> req-x509-newkey rsa: 2048-keyout server.key-nodes-days 365-out server.csr
newIncomingConnection() で作成されたオブジェクトに socketDescriptor が渡される単純な QTcpServer を実行しました。オブジェクトのコンストラクターで、次のことを行いました。
sock = new QSslSocket();
connect (sock,SIGNAL(readyRead()),this,SLOT(onQuery()));
connect(sock,SIGNAL(disconnected()),this,SLOT(deleteLater()));
connect(sock,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(onError(QAbstractSocket::SocketError)));
connect(sock,SIGNAL(sslErrors(QList<QSslError>)),this,SLOT(sltSslErrors(QList<QSslError>)));
...
Load key and cert
...
sock->setProtocol(QSsl::AnyProtocol);
QSslKey sslKey(key, QSsl::Rsa);
QSslCertificate sslCert(cert);
sock->setPrivateKey(sslKey);
sock->setLocalCertificate(sslCert);
sock->setSocketDescriptor(socketDesc);
sock->startServerEncryption();
if(!sock->waitForEncrypted(30000)) {
qDebug()<<"wait for encrypted failed";
}
コンソールで接続すると、「暗号化された失敗の待機」が表示され、ソケットが QAbstractSocket::SslHandshakeFailedError でシグナル error() を発行しました。エラーなしで SSL 接続を確立するために他に何をすべきかについてアドバイスをいただけますか?