Client + Serverアプリで問題が発生したため、今日あなたに来ました。私はQTcpSocketで正常に動作していたサーバーとクライアントアプリケーションを構築しましたが、いくつかのセキュリティを追加し、QSslSocket に遅れたハンドシェイクで行くことを考えました。問題は、私のクライアントが本当に不思議な行動をしていることです。ここでの状況は次のとおりです。QtによるSSLハンドシェイク中にエラーが発生しました
- 私は私のクライアントに
connectToHostEncrypted()
を使用して、それが正常に動作します私のincomingConnectionスロットにソケットをgeting後startServerEncryption()
を呼び出す場合。 - しかし、私は(ソケットでいくつかの読み取り/書き込みを行うことによって)握手を遅らせ、後で
startServerEncryption()
を呼び出す場合、私はエラーを得た:Error during SSL handshake: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
サーバー側で。私もクライアント側でstartClientEncryption()
を使用しようとしましたが、同じエラーが発生します。
証明書は自己署名され、サーバー上のソケットに正しくロードされ、適用されます(openssl s_clientを使用して最初の状況をテストし、サーバーは、SSLv3、TLSv1、 TLSv1.1、TLSv1.2)SSLv2でテストできません。クライアントでは、QSslSocket::setProtocol(QSsl::SslV2)
でこのプロトコルを使用してエラーunsupported protocol
を表示し、openssl s_clientは-ssl2引数で接続しません。利用可能な引数を表示します。
DLLを取得するために、私はQtの5.9.1を使用していると私は、OpenSSL-Win32のv1.0.2Lをインストールしている。私はまた、 。Windows 7の64bit版にmsvc2015 32ビットでコンパイルしてる私はあなたが私を助けることができることを願っています(と私のバのために申し訳ありませんd英語)、ニコラス。