环境
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 属性。由于文档并不明确,请您自行尝试,这里没有明确的建议。不过似乎并不复杂。