在Delphi webservice中使用OpenSSL - 可用的协议和密码

时间:2016-03-10 12:36:14

标签: web-services delphi https openssl

我对在Delphi webservice中使用OpenSSL与HTTPS连接的可用密码有点混淆。

设定:

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

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

我认为答案是“没有”,即只是服务器设置(通过Android / iOS与应用程序握手)确定从可用服务器使用哪个密码。这是正确的假设吗?或者我会错过什么?
(事实上​​,我实际上并不想限制或扩展可用的密码,但是客户坚持认为应该在webservice / OpenSSL中进行某些事情以便进行通信"安全"与应用程序.SSLLabs测试显示他们的域支持TLS 1.0和密码与RSA密钥交换机制,所以例如没有完美的前向保密。对我来说,这看起来像什么无论如何都需要修复。)

注意:

1 个答案:

答案 0 :(得分:4)

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

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