最近有好幾位朋友寫信詢問我有關DataSnap和支援TLS 1.2的問題, 看來很了很多朋友還在使用DataSnap啊. 由於我已經有一段時間沒有使用DataSnap了, 記憶有點模糊, 因此也去查了一下原因順便更新一下對於DataSnap的記憶.
在RAD Studio 1.4.1的Bug修正文件中可以看到下面的說明:
TLS 1.2 support for Datasnap standalone or windows service server
這證明在1.4.1之後的DataSnap已經可以支援TLS 1.2了, 那麼為什麼有許多使用DataSnap的朋友在使用/支援TLS 1.2上仍然有問題呢? 其實原因很簡單, 可能只是這些朋友沒有注意一, 二個小細節.
要讓1.4.1之後的DataSnap支援TLS 1.2, 使用DataSnap的朋友需要完成下面的步驟:
- 更新您的OpenSSL到最新的版本. 例如您可以到 fulgan面新您的OpenSSL https://indy.fulgan.com/SSL/.
- 在您的DataSnap Sever主表單的OnCreate事件中應該可以類似看到如下的程式碼:
procedure TForm1.FormCreate(Sender: TObject);
var
LIOHandleSSL: TIdServerIOHandlerSSLOpenSSL;
begin
FServer := TIdHTTPWebBrokerBridge.Create(Self);
LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
LIOHandleSSL.SSLOptions.CertFile := '';
LIOHandleSSL.SSLOptions.RootCertFile := '';
LIOHandleSSL.SSLOptions.KeyFile := '';
LIOHandleSSL.OnGetPassword := OnGetSSLPassword;
FServer.IOHandler := LIOHandleSSL;
FServer.OnQuerySSLPort := OnQuerySSLPort;
end;
您需要加入如下一行的程式碼來啟動支援TLS 1.2:
LIOHandleSSL.SSLOptions.Method := sslvTLSv1_2;
這樣應該就可以支援TLS 1.2了
------------------------------------------
这个就是采用 TIdTCPServer 或者 TIdHTTPServer 的时候需要支持 TLS1.2 的方法。
我之前有博客写如何让 TIdTCPServer 支持 TLS,也可以参考。
博客介绍了如何在RADStudio 1.4.1之后的版本中使DataSnap支持TLS1.2,包括更新OpenSSL到最新版本并在DataSnap Server主表单的OnCreate事件中添加必要的代码来启用TLS1.2支持。
615

被折叠的 条评论
为什么被折叠?



