web-services - 在 Delphi Web 服务中使用 OpenSSL - 可用协议(protocol)和密码

标签 web-services delphi https openssl

我对在 Delphi Web 服务中使用 OpenSSL 与 HTTPS 连接的可用密码有点困惑。

设置:

  • 我的网络服务在客户端服务器上运行。 OpenSSL 已安装在那里。 Web 服务使用 Indy(TIdHTTPWebBrokerBridge)和 OpenSSL DLL(带有 TIdServerIOHandlerSSLOpenSSL)来加载客户端的证书
  • 我们的 Android/iOS 应用通过 HTTPS 连接到此网络服务
  • 客户端已配置应用程序用户可以连接并访问我的网络服务的域和 IP。如果我们使用例如测试该域the SSLLabs server test我们获得了受支持的密码和协议(protocol)的概述(SSLLabs 甚至模仿设备和浏览器的握手并显示协商的密码)。

问题:我的网络服务(与 OpenSSL 结合)必须/可以做些什么来影响应用程序和网络服务之间 TLS 握手的可用密码?使用 OpenSSL 是否还需要设置任何其他内容?

我认为答案是“否”,也就是说,服务器设置(在通过 Android/iOS 与应用程序握手时)决定使用可用服务器密码中的哪个密码。这是一个正确的假设吗?或者我错过了什么?
(事实上​​,我实际上对限制或扩展可用的密码并不感兴趣,但客户坚持认为在 Web 服务/OpenSSL 中“应该做一些事情”,以使其与应用程序“安全”地通信。 SSLLabs 测试表明,他们的域支持 TLS 1.0 和具有 RSA key 交换机制的密码,因此没有完美的前向保密。对我来说,这看起来无论如何都需要修复)。

注释:

  • This SO question表明我可能必须做点什么,但它没有答案。

  • 我发布了an earlier somewhat related question ,但这没有答案。

  • This SO post状态OpenSSL 在 SSL 握手期间尊重客户端的密码首选项,而不是服务器的密码首选项,这再次表明我可以做一些事情?

  • 我有些怀疑这个问题是否在这里合适的位置(也是因为 Why we are not customer support ),但由于这可能与更多程序员相关,所以我决定将其放在 SO 上。

    <

最佳答案

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

如果您想要完美的前向保密,您必须使用 openssl.exe 创建 DHParam key (按结果文件名填写 TIdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile)。如果您不仅需要 DHE,还需要 ECDHE 密码,您需要调用一些额外的 openssl api,请参阅 a Support for Perfect Forward Secrecy in SSL with indy 10例如。

关于web-services - 在 Delphi Web 服务中使用 OpenSSL - 可用协议(protocol)和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35916691/

相关文章:

.net - 何时使用 WCF 服务ASP.Net 页面?

c# - ASP.NET网页.aspx.cs文件中的私有(private)静态变量

java - 如何从 Java 应用程序获取远程 HTTPS 服务器支持的密码列表?

java - 使用jsoup解析https(java)

delphi - 我如何知道标签字是否包含文本?

php - 强制 heroku 避免使用 https

c# - 什么是最好的?轮询套接字或等待 Web 服务超时?

android - 使用 SOAP 将图像从图库发送到 Web 服务

delphi - 如何在 Delphi 中自动设置 bool 值?

delphi - TIdCommandHandler : How to construct commands?