Web services Delphi webservice和OpenSSL支持的SSL/TLS密码
我们的Web服务还提供HTTPS连接:Web services Delphi webservice和OpenSSL支持的SSL/TLS密码,web-services,delphi,ssl,openssl,delphi-xe2,Web Services,Delphi,Ssl,Openssl,Delphi Xe2,我们的Web服务还提供HTTPS连接: FWebBrokerBridge := TIdHTTPWebBrokerBridge.Create(Self); // TIdHTTPWebBrokerBridge = class(TIdCustomHTTPServer), see IdHTTPWebBrokerBridge.pas LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FWebBrokerBridge); LIOHandleSSL
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
他们的问题,也就是我的问题是:Web服务是否会有问题
我已经用OpenSSL ciphers-v verbose语句检查了OpenSSL支持哪些密码。
这给了我一个长长的名单,上面有他们的密码名称。
他们列出了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程序无关。也不需要重新编译。Web服务将正常工作
注意:我怀疑这个问题是否在这里合适的位置也是因为,但由于这可能与更多的程序员有关,我决定把它放在这里。他们的证书是否真的与他们或你的防火墙规则有关?@mjn问得好。我不知道。我假设在最坏的情况下,他们也会进行https:检查,即用来自防火墙设备的证书替换外部证书。