首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将CloudFront与外部托管的DNS一起使用,指向EC2实例

将CloudFront与外部托管的DNS一起使用,指向EC2实例
EN

Stack Overflow用户
提问于 2018-11-04 20:41:06
回答 2查看 4.1K关注 0票数 3

我正在尝试用我的ec2实例来设置cloudfront。域位于dreamhost,我添加了指向cloudfront url的CNAME记录。

我在我的EC2实例上使用了Lets加密。如果我使用我的弹性IP,并将其设置为“梦想主机”上的A记录,它将很好地转发,一切都正常。如果我将CNAME记录指向cloudfront url,则会得到502错误。

按照故障排除指南这里,我使用在线服务检查了我的SSL证书,这表明一切都很好。

我遗漏了什么?是否必须将cloudfront url添加到我的证书中?

此外,我将发行版的SSL证书指向AWS证书管理器中托管的证书,我认为该证书最终指向了我的原点。我将证书指向我的url,并添加了CNAME记录来验证所有权,所有这些似乎都很好。

更新:

我将我的ec2公共url插入到一个在线ssl检查程序中,并得到以下结果。也许这也是问题的一部分?如果输入弹性IP,我会得到同样的结果。看来这可能是罪魁祸首,但我不知道下一步是什么。回谷歌..。

更新2:

根据我正在阅读的内容,我需要确保在我的ec2实例上安装了中间证书。我还了解到,在Apache2.4中,fullchain.pem文件取代了旧的cert.pem文件,成为SSLCertificateFile

我修改了/etc/httpd/conf/httpd ssl.conf的内容如下:

代码语言:javascript
运行
复制
   <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 url,所以这并不是真正的可比。不幸的是,在我进行更改之前,我没有一个test.example.com的屏幕截图,但是我仍然得到了一个502错误,所以它显然没有修复它。

更新3:

看起来,当我导航到server: CloudFront时,响应头显示的是test.example.com,所以这是朝着正确方向迈出的一步。我以前一点也不明白。

更新4:

我下载了openssl并能够获得以下信息。奇怪的是,证书链甚至没有显示让我们将加密作为证书的来源。

最初,我使用一个使用EC2的letsencrypt来设置我的test.example.com实例。然后,当我创建cloudfront时,我使用证书管理器创建了一个指向我的test.example.com的证书,现在我想知道是否配置错了,因为openssl输出只显示了一个amazon。我对证书管理器和让我们加密证书之间的交互感到困惑,两者似乎都指向同一个url。呃。

我想我得设置一个弹性负载平衡器,并在ELB中使用ACM的证书。那么我想我不再需要让我们在EC2实例上加密证书了?

EN

回答 2

Stack Overflow用户

发布于 2019-07-12 14:26:20

如果使用@Kannaiyan指出的第二种方法,则不需要将域名移动到AWS。只需创建一个托管区域并将该区域中生成的NS记录复制到您的DNS提供程序。然后,您可以轻松地将您的域名(包括顶级域名)连接到Cloudfront发行版。

你可以检查我的答案这里

票数 2
EN

Stack Overflow用户

发布于 2018-11-04 22:03:39

如果您想使用您的自定义SSL与专用IP,AWS将向您收取每月600美元。CloudFront将在边缘提供专用的IP地址,并使用您的SSL并与该IP地址一起服务。

您还可以将自定义SSL导入到AWS管理器,然后可以使用该管理器将其分配给CloudFront端点。这种方法的唯一缺点是,您需要在证书更新期间再次更新SSL。

其他替代方案,

使用第三方DNS提供程序.

  1. 使用DNS提供程序创建CNAME记录。
  2. 使用AWS证书管理器创建AWS安全证书,这可能需要使用CNAME或电子邮件地址进行域验证。这是免费的。
  3. 将CNAME记录添加到CloudFront发行版中。
  4. 收到证书后,将证书分配给CloudFront端点

将有一个额外的往返查询DNS解析为IP。

CloudFront主机DNS名称(something.cloudfront.net) ->解析到IP.

或者,(也是最好的方法,)

如果将DNS移动到53路由,则可以将CloudFront分配给分发,这将在单个DNS请求中解决您的服务域。

有了上面的设置,我就不需要Lets Encrypt证书和EC2了。

在CloudFront上使用AWS的自定义SSL的更多信息可以从这里中找到。

希望能帮上忙。

编辑:

验证SSL:

  1. 将cloudfront原点指向一个S3桶。
  2. 验证cloudfront在与对象连接到S3桶时是否正常工作。
  3. 使用自定义域URL进行验证,以确保自定义SSL证书有效。
  4. 现在将您的来源更改为EC2服务器。
  5. 请确保为调试目的记录请求和响应。
  6. 再次验证自定义域url。
  7. 如果收到5XX,请检查来自EC2服务器的响应。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53145262

复制
相关文章

相似问题

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