CNAME跳转访问CloudFront时SSL证书配置及版本不匹配错误排查
问题:通过CNAME访问CloudFront别名时出现ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误
背景
- 现有CloudFront分发已关联别名
my.originalurl.com,SSL证书及备用名称配置完成,访问https://my.originalurl.com完全正常;该别名在DNS服务商1的配置为my.originalurl.com | CNAME | XXXX.cloudfront.net - 新增别名
my.newurl.com,在DNS服务商2配置为my.newurl.com | CNAME | my.originalurl.com,手里有my.newurl.com的独立证书但还没配置 - 当前访问
https://my.originalurl.com依然正常,但访问https://my.newurl.com时所有浏览器都返回ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误
已尝试操作
- 用SSL Labs检测,结果显示“Failed to communicate with secure server”
- 访问
https://my.newurl.com时,浏览器没有加载对应证书
证书配置疑问
- 直接把证书附加到CloudFront分发,但CloudFront好像一次只能绑一个证书,而且没法合并证书
- 在DNS服务商2配置证书,但查资料说证书得配置在服务器(比如CloudFront)上,不是DNS服务商那边
核心疑问
当前架构可行吗?是不是必须在CloudFront里配置my.newurl.com的相关内容?
解决方案与说明
当前架构是可行的,但必须在CloudFront里完成my.newurl.com的相关配置,不然SSL握手肯定失败。
问题根源
当你访问https://my.newurl.com时,DNS解析最终指向CloudFront节点,但CloudFront分发里没配置这个别名,也没有对应证书,导致CloudFront没法返回匹配my.newurl.com的SSL证书,浏览器直接触发证书不匹配的错误。
具体操作步骤
更新CloudFront分发的证书
- CloudFront支持用包含多个域名的SAN证书(多域名证书),你可以把
my.newurl.com添加到现有证书的备用名称里,或者申请一个同时包含my.originalurl.com和my.newurl.com的新SAN证书,上传到AWS Certificate Manager(ACM) - 要注意:证书必须部署在
us-east-1(弗吉尼亚北部)区域,CloudFront只认这个区域的ACM证书 - 编辑CloudFront分发的设置,把证书换成这个涵盖两个域名的SAN证书
- CloudFront支持用包含多个域名的SAN证书(多域名证书),你可以把
给CloudFront分发添加新别名
- 编辑CloudFront分发的“备用域名(CNAMEs)”字段,把
my.newurl.com加进去 - 保存更改后等CloudFront分发更新完成,一般需要15到30分钟
- 编辑CloudFront分发的“备用域名(CNAMEs)”字段,把
验证配置
- 等分发更新完后,再访问
https://my.newurl.com,确认证书能正常加载 - 再用SSL Labs检测一次,验证证书匹配性和SSL连接状态
- 等分发更新完后,再访问
误区澄清
- 证书不能配置在DNS服务商:DNS只管域名解析,SSL证书必须部署在提供HTTPS服务的终端节点(这里就是CloudFront),DNS服务商处理不了SSL握手
- CloudFront不是只能绑一个证书:它支持绑定包含多个域名的SAN证书,不用合并多个独立证书,只要用一个涵盖所有需要域名的SAN证书就行
内容的提问来源于stack exchange,提问作者Apple juice
相关产品推荐
相关产品推荐

