我正在尝试使用ec2实例设置cloudfront。该域位于dreamhost上,我添加了一个CNAME记录,指向云端URL。
我在我的EC2实例上使用Lets Encrypt。如果我使用弹性IP并将其设置为dreamhost上的A记录,则它可以正常转发,并且一切正常。如果我将CNAME记录指向云端URL,则会收到502错误。
按照故障排除指南here,我使用在线服务检查了SSL证书,结果表明一切正常。
我想念什么?是否必须将cloudfront网址添加到我的证书中?
此外,我将发行版的SSL证书指向AWS证书管理器中托管的证书,我认为这最终指向了我的来源。我将证书指向我的网址,并添加了CNAME记录以验证所有权,所有这些似乎都可以正常工作。
更新:
我将ec2公共URL插入在线ssl检查器中,并得到以下结果。也许这可能是问题的一部分?如果输入弹性IP,我将得到相同的结果。看来这可能是罪魁祸首,但我不知道下一步是什么。回到谷歌搜索..
更新2:
从我正在阅读的内容中,我需要确保在我的ec2实例上安装了中间证书。我还了解到,在Apache 2.4中,fullchain.pem文件代替了旧的cert.pem文件为SSLCertificateFile
。
我修改了/etc/httpd/conf/httpd-le-ssl.conf的内容,如下所示:
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName "test.example.com"
ServerAlias "test.example.com"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/test.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.example.com/privkey.pem
</VirtualHost>
更改该设置并重新启动httpd服务后,我的URL上仍然出现错误。当我将test.example.com插入SSL检查器时,它显示如下:
请记住,我发布的第一个屏幕快照使用的是弹性IP,而不是test.example.com网址,因此两者之间的可比性并不高。不幸的是,在进行更改之前,我没有test.example.com的屏幕截图,但是我仍然遇到502错误,因此显然无法修复。
更新3:
当我导航至test.example.com时,我的响应标题似乎显示server: CloudFront
,这是朝着正确方向迈出的一步。我以前根本没有得到。
更新4:
我下载了openssl并能够获得以下信息。证书链甚至没有显示let加密作为证书源,这很奇怪。
我最初使用test.example.com的letencrypt证书设置EC2实例。然后,当我创建cloudfront分配时,我使用证书管理器创建了指向我的test.example.com的证书,我现在想知道我是否以某种方式配置了该错误,因为openssl输出仅显示了一个亚马逊证书。证书管理器和let加密证书之间的交互让我感到困惑,它们似乎都指向相同的url。啊。
我认为我将必须设置一个弹性负载平衡器并使用ELB中ACM的证书。然后我想我将不再需要在EC2实例上使用let加密证书吗?
答案 0 :(得分:0)
如果您想将自定义SSL与专用IP结合使用,AWS将向您收取每月600美元的费用。 CloudFront将在边缘提供专用的IP地址,并使用您的SSL并与该IP地址一起使用。
您还可以将自定义SSL导入到您的AWS Cert Manager,然后将其分配给CloudFront端点。这种方法的唯一缺点是,您需要在证书续订期间再次更新SSL。
其他替代方案,
与第三方DNS提供商合作。
将会有额外的往返查询DNS解析为IP。
CNAME(解析)-> CloudFront主机DNS名称 (something.cloudfront.net)->解析为IP。
或者,(也是最佳方式)
如果您将DNS移至Route 53,则可以将CloudFront分配到分发版,这将在单个DNS请求中解析您的服务域。
通过上述设置,我发现EC2不需要Lets Encrypt
证书。
可在here中找到有关在CloudFront上使用AWS的自定义SSL证书的更多信息。
希望有帮助。
编辑:
验证SSL:
答案 1 :(得分:0)
如果使用@Kannaiyan指出的第二种方法,则无需将域名移至AWS。只需创建一个托管区域并将该区域中生成的NS记录复制到您的DNS提供商。然后,您可以轻松地将您的域名(包括apex域)连接到Cloudfront发行版。
您可以查看我的答案here