首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >curl:(35)无法与同级进行安全通信:没有通用加密算法

curl:(35)无法与同级进行安全通信:没有通用加密算法
EN

Stack Overflow用户
提问于 2016-07-19 22:04:28
回答 1查看 2.8K关注 0票数 0

我们的应用已经部署到AWS基础设施很长一段时间了。

我们使用ClaudFlare进行缓存和CDN。我们有两个应用程序-Java(Tomcat8)和WordPress(PHP Nginx + FastCGI)。

对于Java应用程序,我们使用带有OpenJDK 8的EC2实例。另外,我们在另一个EC2实例上使用WordPress。

Java应用程序通过https协议上的直接调用与WordPress通信。

我们使用Puppet进行我们的AWS基础设施配置。

一切工作正常,但是几天前我们的Java应用程序无法通过https连接到WordPress,出现以下异常:

代码语言:javascript
复制
Received fatal alert: handshake_failure
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

此外,我们无法通过curl连接到相同的WordPress url,并显示以下错误:

代码语言:javascript
复制
curl: (35) Cannot communicate securely with peer: no common encryption algorithm(s).

这很奇怪,因为我们这一方完全没有改变。

仅作为实验-我们已经禁用了ClaudFlare,并且我们的系统开始正常工作。在此之后,我们启用了ClaudFlare,系统再次失败。

只有从OpenJDK切换到OracleJDK才能完全解决这个问题。

CloudFlare告诉我们,他们的SSL没有任何变化。

所以我想知道这个问题的原因是什么?AWS端可能发生了一些变化(基础架构或某些软件包)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 20:22:41

您需要支持TLS加密套件;CloudFlare只支持CloudFlare协议,除此之外,它们只支持安全密码。如果OpenSSL不支持CloudFlare使用的任何密码,您可能需要在客户端上更新它的版本。

如果您使用的是免费的CloudFlare计划,则只支持ECC ciphers (ECDHE-*),即使用Elliptic Curve Cryptography的密码。如果您使用的是免费CloudFlare计划,则需要确保您的客户端及其操作系统支持椭圆曲线加密。

Nginx SSL configuration如下所示:

代码语言:javascript
复制
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;

一个更不可能的问题可能是您的客户端不支持SNI浏览器。CloudFlare颁发的免费SSL证书需要SNI support (服务器名称指示);请确保您的Java版本支持它。如果您不想这样做,付费CloudFlare计划将支持非SNI客户端。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38460819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档