投稿

ラベル(Indy)が付いた投稿を表示しています

Delphi + Indy + OpenSSL で「SSL で接続する際にエラーが発生しました。プロトコルに違反する EOF が検出されました.」

イメージ
Delphi + Indy+ OpenSSL 構成で SSL接続できなくなり「SSL で接続する際にエラーが発生しました。プロトコルに違反する EOF が検出されました.」というダイアログが出る 直接の原因は、サイト側(さくら)が TLS1.0/1.1 を無効にしたことで、Indy の TIdSSLIOHandlerSocketOpenSSL のプロパティをデフォルトから変更して TLS1.2以上で接続する必要があった (とりあえず接続できるようになったけど、ちょっとモッサリな...) IdHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); with IdHTTP.IOHandler do begin SSLOptions.SSLVersions := [sslvSSLv23]; // ←追加(無くても Methodを指定すると選択されます) // SSLOptions.Method := sslvTLSv1; SSLOptions.Method := sslvSSLv23; // ←変更 SSLOptions.Mode := sslmUnassigned; SSLOptions.VerifyMode := []; SSLOptions.VerifyDepth := 0; end; で 「sslvSSLv23」て、SSLとして古いんじゃないの?と思ったが、 ここ に 変数名の付け方としておかしいとの話が載っていて、本来 sslvSSLBest であり、これを選択した場合  SSLv3, TLSv1, 1.1 or 1.2 とトライするのだとか~ それで遅いのかもね、ただ上記方法であれば 1.2の次が出たときも OpenSSL のアップデートのみで対応できるということになります ※私の修正したコードの Indy バージョンより新しいのは、直接 TLS1.2 とか指定できるかも

Indy TIdHttp の デフォルト useragent - Delphi/C++Builder

Indy (10系統) TIdHttp  の デフォルト useragent Mozilla/3.0 (compatible; Indy Library)