heroku cloudflare子域SSL设置

时间:2017-09-30 00:33:42

标签: ssl heroku dns cloudflare

我正在尝试在heroku上的后端应用上设置https作为这样的子域(例如):

https://api.mydomain.com

我对我发现的所有冲突的在线文档感到困惑。此外,我对所有这些SSL的东西都很绿。这个应用程序将成为数据服务的后端。我现在的前端是在我的域下的OpenShift上的https,它运行正常。这就是我所做的:

  1. 我的heroku应用程序上有一个“爱好”dyno(每月7美元),我读到我需要 启用此功能。
  2. 我有一个cloudflare帐户,可以在https上为openshift前端提供我的域名。
  3. 我从GoDaddy购买了我的域名 - 所以现在它只是指向cloudflare名称服务器。
  4. 我在heroku(设置标签)上设置子域名:api.mydomain.com。它回来后说我的“DNS目标”是api.mydomain.com.herokudns.com。它还说“域:你的应用程序可以在http://api.mydomain.com”找到。
  5. 我点击了“配置SSL”> “使用自动证书管理自动配置”,它回来说:

    “将您的DNS设置更新到我们的安全域”

  6. 说实话,不太确定这意味着什么。我试图回到cloudflare并添加DNS记录(DNS选项卡)。像这样:

  7. Type: CNAME
    Name: api                                <--is this right?
    Value: api.mydomain.com.herokudns.com    <-- what do I put here?
    

    但这不起作用。我怎么知道?我打字 heroku certs:auto它回来'失败'。也试过价值:mydomain.com.herokudns.com没有前面的'api'。我真的很困惑,文档也没多大帮助。有人能帮助我吗?

2 个答案:

答案 0 :(得分:4)

我找到了一个更简单的解决方案。修正案在Cloudflare's tutorial中提到。

诀窍是将您的标准heroku应用程序地址(例如:myapp.herokuapp.com)INSTEAD显示在heroku的SSL接口中显示的xxx.herokudns.com

然后,要使您的自定义子域(例如:api.foodomain.com)指向它,只需在Cloudflare的DNS中添加CNAME记录

CNAME api myapp.herokuapp.com

它应该有用(它适用于我的情况)。

答案 1 :(得分:1)

好的,如果其他一些疲惫不堪的程序员来到这里。

Cloudflare和Heroku不相处。使用来自cloudflare的SSL。以下是:

  1. 禁用heroku上的自动认证:heroku certs:auto:disable
  2. 在heroku上删除您的域名并重新开始
  3. 在heroku上再次添加(子)域
  4. 键入heroku domains以查看REAL域现在是什么 - 如果未启用ACM,它可能会返回到... herokuapp.com而不是... herokudns.com
  5. 在CNAME下的cloudflare(DNS标签页)中设置一个,如下所示:

    CNAME | yoursubdomainname | yourdomainname.com.herokuapp.com

  6. 在cloudflare中设置Page Rules就像这样:  http:// yourdomainname.com/ =&gt;始终使用https

  7. 加密选项卡上的
  8. 使用完整SSL。

  9. 等一个小时左右,确保这些都生效。

  10. 希望能有所帮助。