環境
Windows 11 Pro 23H2
Delphi 12 Version 29.0.50491.5718
CentOS Linux release 7.9.2009 (Core)
nginx version: nginx/1.20.1
發生的問題
Project ProjectName.exe raised exception class EIdOSSLUnderlyingCryptoError with message 'Error connecting with SSL.error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version'.
在 delphi 開發中使用 TIdHttp 配合 TIdSSLIOHandlerSocketOpenSSL 進行 https 訪問時可能會遇到上述錯誤。在網上可以查到各種解決辦法,比如更換 dll 檔案等。這裡提供另外兩個思路:
- 更改 Nginx 配置。如果您的 Nginx 配置檔案中有如下指令
ssl_protocols TLSv1.2 TLSv1.3;
,可以嘗試修改為ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
。當然前提是您正確的使用了 TIdSSLIOHandlerSocketOpenSSL。 - 更改 TIdSSLIOHandlerSocketOpenSSL 的 SSLOptions 屬性中的 SSLVersions 屬性。由於文件並不明確,請您自行嘗試,這裡沒有明確的建議。不過似乎並不複雜。