【问题标题】:Using OpenSSL in Delphi webservice - available protocols and ciphers在 Delphi Web 服务中使用 OpenSSL - 可用的协议和密码
【发布时间】:2016-03-10 12:36:14
【问题描述】:

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

设置:

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

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

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

注意事项:

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

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

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

  • 我有点怀疑这个问题在这里是否合适(也因为Why we are not customer support),但由于这可能与更多程序员有关,我决定把它放在SO上。

    李>

【问题讨论】:

    标签: web-services delphi https openssl


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答,迈克尔。现在我有了一个开始的地方。稍后我可能会使用实际代码示例编辑您的答案。
    • 在我当前的带有 Indy 10.5.8.0 的 Delphi XE2 版本中没有 TIdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile 这样的东西。我尝试了类似 Embarcadero 帖子中的受保护黑客来访问上下文,但它也没有 DH 参数属性。
    • 我使用 Delphi XE6 和 Indy 10.6.0.5122。您可以在 www.indyproject.org 上下载最新版本的 Indy,并了解 DHParamsFile 的使用情况。实际上,这个文件的内容被加载到内存中并被推送到 Context(OpenSSL API 函数:BIO_new_mem_buf、PEM_read_bio_DHparams、SSL_CTX_set_tmp_dh)。
    • 是的,几周后我们要去西雅图 10。我刚刚停止了我当前的开发分支,并将进一步的更新推迟到那时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多