Heroku裸域名SSL证书状态失败,www域名正常问题求助
裸域名SSL证书失败的原因及解决办法
嘿,我来帮你捋捋这个问题的核心根源——你在GoDaddy给裸域名设置的转发规则,和Heroku的SSL证书验证逻辑完全不兼容。
具体来说:
- Heroku的
certs:auto功能是通过ACME协议验证域名所有权的,这个验证要求域名的DNS记录必须直接指向Heroku的DNS端点,这样Heroku才能确认域名归属,进而签发SSL证书。 - 但你给裸域名设的是GoDaddy的域名转发,这种转发本质是GoDaddy服务器做的301/302跳转,而非直接的DNS解析指向。这就导致Heroku的证书验证服务没法通过DNS解析确认裸域名的归属,自然就签发失败了。
接下来咱们一步步解决这个问题:
第一步:取消GoDaddy的裸域名转发
登录GoDaddy的DNS管理界面,找到裸域名(mydomainname.com)的转发设置,直接删掉这个规则就行。
第二步:给裸域名设置正确的DNS记录
因为根域名(裸域名)按DNS规范不能设置CNAME记录,所以咱们得用GoDaddy支持的ALIAS/ANAME记录(GoDaddy里一般叫ALIAS):
- 主机记录(Host)填
@(或者留空,代表根域名) - 指向(Points to)填
mydomainname.com.herokudns.com(和www子域名的CNAME目标对应,只是去掉前面的www) - TTL可以设成30分钟以内,让DNS解析尽快生效
如果GoDaddy不支持ALIAS/ANAME记录,还有个备选方案:
- 先运行
dig mydomainname.com.herokudns.com命令,获取Heroku对应应用的IP地址(可能会有多个),然后给裸域名设置A记录,把这些IP都填进去。不过要注意,Heroku的IP可能会变动,所以ALIAS/ANAME是更稳妥的选择。
第三步:重新触发Heroku的证书生成
等DNS记录生效后(可以用nslookup mydomainname.com确认解析是否已经指向Heroku的服务器),运行下面的命令重置证书:
heroku certs:auto:disable heroku certs:auto:enable
之后再用heroku certs:auto查询状态,应该就能看到裸域名的证书状态变成ok啦。
内容的提问来源于stack exchange,提问作者mur7ay
相关产品推荐
相关产品推荐

