我有一個網站,我發佈到目前支持TLS v1.1和TLS 1.2。他們很快只會允許TLS 1.2版本的連接。出於這個原因,我將Delphi 5升級到了Indy 10。Indy 10和sslvTLSv1_2
目前,我在代碼中創建我的組件和一切偉大工程同時運行3個線程:
HTTp := TIdHttp.Create(nil);
HTTP.OnSelectAuthorization := HTTPSelectAuthorization;
HTTP.HTTPOptions := [hoInProcessAuth,hoForceEncodeParams,hoKeepOrigProtocol];
HTTP.OnStatus := HTTPStatus;
HTTP.OnWorkEnd := HTTPWorkEnd;
HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
HTTP.ProxyParams.ProxyPort := ProxyPort;
HTTP.ProxyParams.ProxyUsername := ProxyUserName;
HTTP.ProxyParams.ProxyPassword := ProxyPassword;
HTTP.ProxyParams.BasicAuthentication := ProxyBasicAuth;
end;
If UseSSL and (SSL = nil) then
Begin
SSL := TIDSSLIOHandlerSocketOpenSSL.Create(nil);
SSL.SSLOptions.Mode := sslmClient;
SSL.OnGetPassword := SSLGetPassword;
SSL.SSLOptions.Method := sslvTLSv1_2;
HTTP.IOHandler := SSL;
end;
是否有一個事件,我會告訴我什麼TLS版本我目前實際上當連接發一個帖子?當他們最終停止接受TLS v1.1連接時,我不希望有什麼驚喜。
謝謝。
不sslvTLSv1_2允許v1.1和1.2 ,還是隻有1.2?爲了確保我會在Internet上搜索一個只允許1.2的HTTP服務器並對其進行測試。 – mjn
@mjn'sslvTLSv1_2'只代表1.2。如果你想同時支持1.1和1.2,你需要使用'SSLOptions.SSLVersions'屬性來代替'SSLOptions.Method'屬性。這將允許您一次啓用多個版本,因此OpenSSL可以執行版本協商以使用最高版本。 –
@RemyLabeau,你是說如果我使用'SSL.SSLOptions.Method:= sslvTLSv1_2'來分配SSL,如果該服務器不支持TLS v1.2,我會得到一個錯誤,Indy不會自動嘗試切換到TLSv1_1?如果是這種情況,我不需要檢查狀態,對不對? –