Delphi webservice和OpenSSL支持SSL / TLS密码

时间:2015-09-08 14:01:17

标签: web-services delphi ssl openssl delphi-xe2

我们有一个也提供HTTPS连接的网络服务:

FWebBrokerBridge := TIdHTTPWebBrokerBridge.Create(Self);    // TIdHTTPWebBrokerBridge = class(TIdCustomHTTPServer), see IdHTTPWebBrokerBridge.pas

LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FWebBrokerBridge);
LIOHandleSSL.SSLOptions.CertFile     := FHTTPSCertificate;
LIOHandleSSL.SSLOptions.RootCertFile := FHTTPSRootCertificate;
LIOHandleSSL.SSLOptions.KeyFile      := FHTTPSPrivateKey;
LIOHandleSSL.OnGetPassword := HTTPSIOHandlerSSLOpenSSLGetPassword;
FWebBrokerBridge.IOHandler := LIOHandleSSL;

如代码所示,我们的开发机器上安装了OpenSSL(版本1.02d)。

我们的一个客户运行我们的Web服务并使用OpenSSL(假设版本相同)。 他们现在要更改防火墙并使用以下密码开始使用证书:

TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256

他们的问题(因此我的问题)是:网络服务是否/可能存在此问题?

我已经使用openssl ciphers -v(详细)声明检查了OpenSSL支持的密码 这给了我一个带有密码名称的长列表 他们的OpenSSL ciphers page列出了OpenSSL使用的名称与相关规范中的套件名称之间的对应关系 (讽刺注意:不要和FireFox一起去那里,它抱怨他们使用旧的TLS版本)

他们翻译:

TLS_RSA_WITH_AES_128_CBC_SHA     -> AES128-SHA (from the 'AES ciphersuites from RFC3268, extending TLS v1.0')
TLS_RSA_WITH_AES_256_CBC_SHA     -> AES256-SHA (idem)
TLS_RSA_WITH_AES_128_CBC_SHA256  -> AES128-SHA256 (from the 'TLS v1.2 cipher suites')
TLS_RSA_WITH_AES_256_CBC_SHA256  -> AES256-SHA256 (idem)

这里似乎适用的是他们的评论应该注意的是,几个密码套件名称不包括所使用的认证,例如DES-CBC3-SHA。在这些情况下,使用RSA身份验证

这些翻译的名称在我生成的列表中:

...
AES128-SHA              SSLv3 Kx=RSA        Au=RSA  Enc=AES(128)  Mac=SHA1
...
AES256-SHA              SSLv3 Kx=RSA        Au=RSA  Enc=AES(256)  Mac=SHA1
...
AES128-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA256   
...
AES256-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA256
...

以下结论是否正确?

OpenSSL版本支持他们将使用的密码,这与我的Delphi程序无关。无需重新编译。网络服务将正常运作。

注意:我怀疑这个问题是否在这里适当的地方(也是因为Why we are not customer support),但由于这可能与更多的程序员有关,所以我决定把它放在SO上。

0 个答案:

没有答案