Heroku自动证书管理失败,只有一个域

时间:2018-04-05 11:52:01

标签: ssl heroku ssl-certificate namecheap dnsimple

我正在尝试使用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 onethis one,但仍然不知道出了什么问题。

www.example.com正常但example.com失败的事实让我更加困惑。不幸的是,我收到了一封没有failure reason的通知电子邮件。

Namecheap

我想问题出在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和其他人不支持这些类型的记录。   相反,他们倾向于提供以下内容:

     
      
  • 记录

  •   
  • 网址重定向/转发

  •   
     

这两个选项都有警告......

令人惊讶的是,我没有找到任何清楚解释所有步骤的地方。到目前为止我所做的是:

  1. 使用支持此功能的DNS主机开设帐户。我拿了DNSimple。在撰写本文时,价格从5欧元/月开始,但是有一个试用月免费。
  2. 转移域名费用为14欧元/年,因此我只需pointed the name servers at Namecheap to DNSimple并将域名添加到DNSimple以创建DNS记录。
  3. 然后是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
    
  4. 一开始没有任何工作,浏览器显示以下错误:

      

    无法访问此站点

         

    无法找到www.example.com的服务器IP地址。

    检查troubleshotting documentation我看到唯一的可能性是Name server propagation delay,所以我等了。这感觉好像很长一段时间,但实际上只需不到一个小时,直到该网站再次上线。

    然而,SSL认证在48小时后仍然失败......

2 个答案:

答案 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/