我最近需要配置CocoaHttpServer,我们在我们的应用程序中成功使用它来处理来自客户端应用程序(在Android设备上运行)的HTTPS连接.这很好 - 有大量的示例代码可以实现这一点,我们能够毫无问题地启用安全服务器.
在实践中,我们看到了令人难以置信的长SSL谈判阶段,而客户端正在与我们的服务器进行握手 - 超过70秒.
通过一系列的搜索,我发现延迟是因为在CFSocket中启用SSL时默认使用的Diffie-Hellman参数的计算.这个帖子是我第一次找到问题答案的地方.
为了匹配我们的Windows服务器正在做的事情(使用安全性较低的SSL密码),我需要在Mac上明确设置密码,这在使用AsyncSocket作为套接字通信的包装器时并不容易.
我们的Windows服务器正在使用:TLS_RSA_WITH_RC4_128_MD5)(0x04)RC4 128位MD5 RSA
我们的Macintosh服务器正在使用:TLS_DHE_RSA_WITH_AES_256_CBC_SHA(0x039)AES 256位SHA-1使用RSA证书进行短暂的Diffie-Hellman密钥交换
"安全性"的差异很大,但可能不值得我们看到的努力/计算/延迟.安全剧院?