Amazon CloudFront 502 cannot connect to origin

  • Posted on | Updated on
  • by
  • in

这是之前我在转用 Amazon CloudFront 的时候,遇到的一个问题,我用的是 Custom origin,是以本站的原始服务器作为源,没有使用 Amazon 的 S3。当配置完成 CDN 生效后,在访问的时候出现了 502 错误,显示 cloudfront cannot connect to origin。

在仔细检查后,发现了问题,其实在一年前或者更久之前已经遇到过这个坑了。
那就是 Amazon CloudFront 只支持有限的几个加密协议。而恰巧本站当时的加密协议中没有这几个。

Amazon CloudFront 要求的加密算法:

  • ECDHE-RSA-AES128-SHA
  • ECDHE-RSA-AES256-SHA
  • AES256-SHA
  • AES128-SHA
  • DES-CBC3-SHA
  • RC4-MD5

源服务器必须支持上面的任意一种,来建立 SSL 连接。

我的服务器之前是使用椭圆曲线算法,支持的加密协议没有包括上面的。

为了修复这个问题,我重新签发了证书,新签了一个 RSA 的证书,然后在 Nginx 配置文件里,使用了双证书。

同时使用了 ECC 和 RSA 的证书。然后修改了加密算法协议。

重新载入 Nginx 服务器后,就好了。

用 SSLLab 服务器测试工具,可以看到下面所支持的加密算法套件。

ciphers-dualssl.jpg里面包括了 Amazon 所要求的算法:

  • ECDHE-RSA-AES128-SHA
  • ECDHE-RSA-AES256-SHA

备注:

  • Nginx 从 1.11.0 版本后开始支持 双证书的。 参见 https://community.centminmod.com/dualsslcerts
  • CloudFront 的加密算法说明 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#RequestCustomEncryption
  • AWS 关于源服务器连接问题的解决办法 https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-connectivity-custom-origin/

作者: David Yin
原载: SEO 网站优化推广
版权所有。转载时必须以链接形式注明作者和及本声明。