在 Delphi 网络服务中使用 OpenSSL - 可用的协议和密码

Using OpenSSL in Delphi webservice - available protocols and ciphers

我对在我的 Delphi 网络服务中使用 OpenSSL 与 HTTPS 连接的可用密码有关感到有点困惑。

设置:

问题:我的网络服务(结合 OpenSSL)是否必须do/can做任何事情来影响应用和网络服务之间 TLS 握手的可用密码?是否需要使用 OpenSSL 设置任何其他内容?

我认为答案是 'no',即只是服务器设置(在通过 Android/iOS 与应用程序握手时)确定使用可用服务器密码中的哪个密码。这是一个正确的假设吗?还是我错过了什么?
(事实上​​ ,我实际上对限制或扩展可用密码并不感兴趣,但客户坚持认为 "should be done" in/with webservice/OpenSSL 可以使其通信 "safely" 与应用程序。SSLLabs 测试表明他们的域 only 支持 TLS 1.0 和具有 RSA 密钥交换机制的密码,因此例如没有完美前向保密。对我来说,这看起来像无论如何都需要修复)。

备注:

可以通过TIdServerIOHandlerSSLOpenSSL.SSLOptions.CipherList指定可用密码(以及通过TIdServerIOHandlerSSLOpenSSL.SSLOptions.SSLVersions指定SSL/TLS版本)。

如果您想要完美前向保密,您必须使用openssl.exe创建DHParam密钥(按结果文件名填写TIdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile)。如果您不仅需要 DHE,还需要 ECDHE 密码,您需要调用一些额外的 openssl api,例如参见 [​​=10=]。