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 实例。
我很困惑如何设置 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 实例。