我有一个网站,我发布到目前支持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?如果是这种情况,我不需要检查状态,对不对? –