シンプルコード:tidhttp:(直接TLSv1_2接続を設定して)変なSSLv3_READ_BYTESエラー
Error connecting with SSL.
error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
私は、Delphi XE3とOpenSSL 1.0.2bを使用します。簡単なコードは私にエラーを与える
procedure TForm1.Button1Click(Sender: TObject);
//var
//h: tIdHTTP;
//SSL: TIdSSLIOHandlerSocketOpenSSL;
begin
h.IOHandler := SSL;
SSL.SSLOptions.Method := sslvTLSv1_2;
SSL.SLLOptions.SSLVersion := [sslvTLSv1_2]; //must be set automatically after SetMethod, but just to be sure
h.Get('https://www.deviantart.com/users/login');
end;
ことlibs。
if not (sslvSSLv2 in SSLVersions) then begin
SSL_CTX_set_options(fContext, SSL_OP_NO_SSLv2);
end;
if not (sslvSSLv3 in SSLVersions) then begin
SSL_CTX_set_options(fContext, SSL_OP_NO_SSLv3);
end;
if not (sslvTLSv1 in SSLVersions) then begin
SSL_CTX_set_options(fContext, SSL_OP_NO_TLSv1);
end;
しかし、SSLv3の操作はまだ何とかになって: が、私はそれを把握することはできません、ソースに探して、バージョンを使用していない無効接続開始中の文字列があります。コンポーネントのバグのようには見えません。何かライブラリ内部、またはインディはパラメータを設定するときに何かを考慮しない?
実際には、何か重要なことに気付かなかったのは私です。 "indy components update"という地獄を通過する必要はないと本当に願っています。 (TLS1.2含む試みすべてのメソッド)SSL3とTLS1 /用https://www.deviantart.com/users/login
Resolving hostname www.deviantart.com.
Connecting to 54.230.96.81.
Handshake Start: before/connect initialization
Connect Loop: before/connect initialization
Connect Loop: SSLv3 write client hello A
fatal Read Alert: handshake failure
Connect Failed: SSLv3 read server hello A
ERROR: Error connecting with SSL.
error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
- 1.1/1.2結果は同一であるに
テスト。
- SSLv23の回答SSL23_GET_SERVER_HELLO:sslv3アラートハンドシェイクの失敗。
- for SSLv2は応答しません。同様のリソース(TLS1.2 ONLY)に
テストhttps://files.yande.re/image/da9afa6d9ca43a9f154fad69f76adb85.jpg
Resolving hostname files.yande.re.
Connecting to 5.39.10.56.
Handshake Start: before/connect initialization
Connect Loop: before/connect initialization
Connect Loop: SSLv3 write client hello A
Connect Loop: SSLv3 read server hello A
Connect Loop: SSLv3 read server certificate A
Connect Loop: SSLv3 read server key exchange A
Connect Loop: SSLv3 read server done A
Connect Loop: SSLv3 write client key exchange A
Connect Loop: SSLv3 write change cipher spec A
Connect Loop: SSLv3 write finished A
Connect Loop: SSLv3 flush data
Connect Loop: SSLv3 read server session ticket A
Connect Loop: SSLv3 read finished A
Handshake Done: SSL negotiation finished successfully
Connect Exit: SSL negotiation finished successfully
マイWireSharkのテスト:
- インディ:
http://imgur.com/BZ84Cl3
(応答が握手故障です)。 - Firefox:
http://imgur.com/pkYJvnO
; - Firefoxリクエストへの応答:
http://imgur.com/M9ni3TV
;
TLS1は基本的にSSL3の拡張です。OpenSSLはSSL3ルーチンの内部でTLS1を実装しています。 –
Indyソースディレクトリをプロジェクト検索パスに追加し、コンポーネントを動的に作成すると、新しいバージョンのIndyを簡単に試すことができます。参照してください:[HTTPS URLを要求するときTIdHTTPは現在、デフォルトのSSLIOHandlerを作成](http://www.indyproject.org/Sockets/Blogs/ChangeLog/20141222.DE.aspx) – mjn
MJN、先端のためのおかげで、しませんでした何らかの理由でそれについて考える。 – avil