与Heroku托管和Gandi域的SSL

时间:2017-09-22 21:39:13

标签: ssl heroku dns

我正在尝试使用Heroku设置SSL自动化证书管理。我有Gandi的域名,并且设置DNS目标时遇到了麻烦。

Heroku如何说应该设置:

Domain Name       DNS Target

mydomain.com      mydomain.com.herokudns.com
www.mydomain.com  www.mydomain.com.herokudns.com

理想情况下,在Gandi我会有

Name   Type   Value

www    CNAME  www.mydomain.com.herokudns.com
@      CNAME  mydomain.com.herokudns.com

但是,您无法将根域分配给CNAME记录,因此第二行不起作用。

另一种方法是使用A记录

Name   Type   Value

www    CNAME  www.mydomain.com.herokudns.com
@      A      1.2.3.4 (IP Address of my site)

但这又不起作用,因为Heroku托管网站的IP地址可能会发生变化。 因此,我认为通过Gandi的网络转发将mydomain.com转发到www.mydomain.com,我找到了一个解决方案。对于我的DNS记录,我只有:

Name   Type   Value

www    CNAME  www.mydomain.com.herokudns.com

所以现在网站可以运行,我可以访问www.mydomain.com或mydomain.com来访问它,但现在我的SSL认证无效了!

我的网站仍然说“您与此网站的连接不安全”

当我检查Heroku的状态时,我得到:

Domain            Status
───────────────   ───────
www.mydomain.com  OK
mydomain.com      Failing

我基本上刚学到了DNS今天的大部分工作方式,所以我可能完全错了。

感谢任何帮助!

4 个答案:

答案 0 :(得分:2)

好的,显然不可能将Heroku的SSL证书与Gandi一起使用,所以我最终选择了Gandi的SSL证书。如果有人需要一个教程,这里是Le Wagon的一个很棒的教程 https://vimeo.com/209534466

答案 1 :(得分:2)

使用带有gandi的heroku ssl证书是可能的(而且更便宜)...你只需要确保每次都设置一个子域名。我相信heroku自动化证书不支持裸子域或通配符,因为let的加密restrictions。一旦所有子域的雕像都可以,请不要忘记在应用程序中使用force_ssl,因此每个http请求都将重定向到https。你可以这样做:

# config/environments/{staging,production}.rb
config.force_ssl = true

非常重要!不要忘记删除或编辑任何不可靠的外部资产链接。否则,浏览器会根据Modzilla support page about mixed content

中描述的那些不安全的链接来浏览页面

完成所有这些操作后,U会在您应用的每个页面上看到令人满意的绿色锁:D。

答案 2 :(得分:0)

根据我的经验,对这个问题进行跟进。我从Gandi购买了域名,并使用永久性网络转发将域名转发到我的heroku应用程序。我还将自定义域(我买的那个)添加到heroku控制台。

Domain Name        DNS Record Type  DNS Target
─────────────────  ─────────────── ───────────────────────
xshogi.com.tw      ALIAS or ANAME   xshogi.com.tw.herokudns.com
www.xshogi.com.tw  CNAME            www.xshogi.com.tw.herokudns.com

即使我已经支付了业余爱好计划,我也无法成功采用heroku ACM来配置我的域名。

我按照Johnnybib发布的教程video

  1. 使用openssl req -nodes -newkey rsa:2048 -sha256 -keyout server.key -out server.csr
  2. 在项目中创建server.crs和server.key
  3. 转到Gandi购买SSL证书页
  4. cat server.csr并将其粘贴到Gandi控制台
  5. 支付并等待完成此帐单的身份验证
  6. 下载.crt和.pem证书并将它们连接到all.crt
  7. 使用heroku certs:add --app xshogi all.crt server.key
  8. 此外,请务必将CNAME wwwwebredir.vip.gandi.net.更改为xshogi.com.tw.herokudns.com

    所有设置并等待一会儿,我可以卷曲https://www.xshogi.com.tw。我还可以在浏览器中连接到https://www.xshogi.com.tw,并且网址不会更改为https://xshogi.herokuapp.com

答案 3 :(得分:0)

您实际上可以使用heroku的SSL服务器。
您可以在Gandi中执行的操作是重定向到https://www.yoursite.com :) 考虑到您已将DNS设置更改为heroku提供的设置。