namecheap DNS 配置不适用于 Heroku 自定义域上的 https

namecheap DNS config does not work with https on Heroku custom domain

我很困惑如何设置 namecheap 和 heroku,以便它们协同工作以通过 https 为自定义域提供服务。

我正在使用 heroku ssl beta,在配置结束时,heroku 已经更新了它的域映射,如下所示:

myapp.com        myapp.com.herokudns.com
www.myapp.com    wwww.myapp.com.herokudns.com

ssl证书已成功添加到heroku,我知道是因为我可以用绿色挂锁访问https://myapp.herokuapp.com

下一步应该是修改namecheap DNS,我按照这个tutorial

我添加的条目是:

CNAME Record    www    myapp.herokuapp.com
URL Redirect    @      https://www.myapp.com

应该是这样,但它并没有像我预期的那样工作。

如果我键入 myapp.com,它会转到 https://www.myapp.com(因此重定向有效),但没有挂锁。

直接去https://www.myapp.com也一样

我确定不是因为更改还没有生效,因为我弄乱了其他域,5分钟左右就已经生效了。

谁能告诉我这是什么问题?

您重定向到 https://www.myapp.com。浏览器需要 www.myapp.com 的证书,但根据您的描述,只有 myapp.herokuapp.com 的证书。因为 URL 中的主机名与证书的主题不匹配,浏览器抱怨证书错误。

我发现了问题,在将 ssl 证书上传到 heroku 后,我应该停止使用 myapp.herokuapp.com,而是使用 myapp.com.herokudns.com,所以在 namecheap 的 DNS 配置中,我应该有以下内容:

CNAME Record    @        myapp.com.herokudns.com
CNAME Record    www      www.myapp.com.herokudns.com

我不认为重定向是必要的(即使在 Namecheap 的 document 中它说你不应该在裸域上设置 CNAME,而应该重定向 www)。我尝试使用 URL redirect record www https://myapp.com 来替换 www CNAME 记录,但它不起作用。

此外,当我用lets encrypt创建证书时,我只认证了域myapp.com,但忘记了www.myapp.com,所以当访问www域时,浏览器抱怨证书来自myapp.com,一旦我将证书扩展到 www.myapp.com,使用上述配置,所有域都可以正常使用绿色挂锁。

您在 Namecheap 中的解决方案(将 CNAME 用于 @)也适用于 https fwding 到亚马逊 ELB 实例。我的域名由 Namecheap 提供服务。他们的建议(如您指出的那样不正确)是 URL 将我的域 (x.com) 的 https 流量转发到我的亚马逊 elb 实例(它有我的 x.com 的 ssl 证书)。 URL fwding 从 NameCheap 的服务器收到一个连接被拒绝的错误。

为 @ 使用 CNAME 会为 https URLs 显示漂亮的绿色安全印章。我还为非 https 流量添加了一个 CNAME www 到同一个亚马逊 elb 实例。