我正在尝试使用Heroku获取我的应用程序的SSL认证,但Automated Certificate Management未能同时使用其中一个域名。
我在2017年3月之前创建了dyno,所以我必须按照here的说明运行heroku certs:auto:enable
。
然后,heroku domains
返回:
Domain Name DNS Record Type DNS Target
─────────────── ─────────────── ─────────────────────────────
example.com ALIAS or ANAME example.com.herokudns.com
www.example.com CNAME www.example.com.herokudns.com
这似乎符合what heroku expects。
无论如何,heroku certs:auto
返回:
Domain Status
─────────────── ────────────
example.com Failing
www.example.com OK
我承认我对域名,DNS等设置非常不识字。因此,这可能是我身边的一个非常简单的错误。不过,我阅读了Heroku troubleshooting documentation以及SO中的类似问题,例如this one或this one,但仍然不知道出了什么问题。
www.example.com
正常但example.com
失败的事实让我更加困惑。不幸的是,我收到了一封没有failure reason的通知电子邮件。
我想问题出在Heroku或我购买域名的地方。那就是Namecheap.com。
在Domain
标签处,我有:
NAMESERVERS Namecheap BasicDNS
REDIRECT DOMAIN Source URL Destination
example.com http://www.example.com
在Advanced DNS
标签处:
Type Host Value TTL
------------- ----- ------------------------------- -------
CNAME Record www example.com.herokudns.com Automatic
TXT Record @ google-site-verification... Automatic
URL Redirect Record @ http://www.example.com/ Unmasked
我做错了什么?
这个问题似乎是由于Namecheap造成的。我在Heroku上找到了following ticket:
问题
用户无法指出他们的根域(也称为顶点) 域/裸域)到他们的Heroku应用程序,或者设置 正确的DNS记录,或通过HTTPS访问它。
分辨率
Heroku上的根域需要使用" CNAME-like"记录,经常 称为ALIAS或ANAME记录。
不幸的是,许多流行的DNS主机,如GoDaddy, Namecheap,Bluehost和其他人不支持这些类型的记录。 相反,他们倾向于提供以下内容:
记录
网址重定向/转发
这两个选项都有警告......
令人惊讶的是,我没有找到任何清楚解释所有步骤的地方。到目前为止我所做的是:
然后是DNSimple上的配置。我按照文档中的步骤1来redirect HTTP to HTTPs;由于Heroku的ACM已经做到了,所以忽略了第2步;对于第3步,文章Pointing the Domain Apex to Heroku非常有帮助。我手动添加了ALIAS record
,我还添加了CNAME
条记录,如下所示:
Type Name Content
───── ─────────────── ───────────────────────
ALIAS example.commyapp.com.herokudns.com
CNAME www.example.commyapp.com.herokudns.com
一开始没有任何工作,浏览器显示以下错误:
无法访问此站点
无法找到www.example.com的服务器IP地址。
检查troubleshotting documentation我看到唯一的可能性是Name server propagation delay
,所以我等了。这感觉好像很长一段时间,但实际上只需不到一个小时,直到该网站再次上线。
然而,SSL认证在48小时后仍然失败......
答案 0 :(得分:4)
供将来参考:联系Heroku支持后,他们手动刷新我的证书申请,最后发给我的应用...
答案 1 :(得分:2)
在此处检查答案,尤其是CloudFlare解决方案,因为它是免费的
自动证书管理还可为您提供免费的SSL证书 从https到处。您不需要购买证书。
但是namecheap不适用于ACM,因为它们不允许 您的“顶点”域的“别名”记录,即您的域,没有 子域,因此https://example.com而不是https://www.example.com
您的选项已切换到支持“别名”的dns注册商 记录,例如dnsimple。他们除了每月收取$ 5 域名注册费。
或者使用SSL随附的免费cloudflare实例。
如果您已经购买了证书,则可以通过以下方式将其上传到Heroku SSL插件。
我在某些应用程序上同时使用DNSimple / Heroku ACM,在某些应用程序上同时使用cloudflare 其他。两者都同样不错,但是cloudflare是免费的,为您提供 CDN也是如此。
https://www.reddit.com/r/Heroku/comments/7wh5r4/setting_up_ssl_with_heroku_namecheap/