为Heroku域指定SSL端点

时间:2015-10-16 23:45:40

标签: ruby-on-rails ssl heroku

我有两个Heroku应用程序层(一个生产和一个临时应用程序)

我的DNS配置为指向其中一个,具体取决于子域。

  • *.example.co - > app-production
  • *.staging.example.co - > app-staging

SSL

两者都启用了SSL添加。将相同的SSL通配符证书上载到两者。

> heroku certs --remote production
Endpoint                      Common Name(s)            Expires               Trusted
----------------------------  ------------------------  --------------------  -------
tokushima-XXXX.herokussl.com  *.example.co, example.co  2018-10-10 00:00 UTC  True


> heroku certs --remote staging
Endpoint                      Common Name(s)            Expires               Trusted
----------------------------  ------------------------  --------------------  -------
hiroshima-XXXX.herokussl.com  *.example.co, example.co  2018-10-10 00:00 UTC  True

每个都有在Heroku中配置的相应域

> heroku domains --remote production

=== app-production Custom Domains
Domain Name                    DNS Target
-----------------------------  -------------------------------------
*.example.co                   tokushima-XXXX.herokussl.com
example.co                     tokushima-XXXX.herokussl.com


> heroku domains --remote staging

=== app-staging Custom Domains
Domain Name           DNS Target
--------------------  ------------------------
*.staging.example.co  app-staging.herokuapp.com   <-- should this be the SSL endpoint?

问题

以上所有方法在路由方面都很好。

  • foo.example.co访问我的制作应用
  • foo.staging.example.co访问我的暂存应用

然而在登台时,SSL无效。我得到一个不受信任的证书&#34;错误,即使它是相同的证书。

我强烈怀疑它是因为在配置暂存域时,DNS目标应该是SSL端点,而不是直接的heroku应用URL。

但我无法编辑。如果我做

> heroku domains:add *.staging.example.co --remote staging

它会自动为我添加DNS目标。在Prod上它会自​​动添加SSL端点。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

这是ssl通配符证书的行为方式:* .example.com的证书对foo.example.com有效,但对bar.foo.example.com无效。

这在rfc 2818中指定,其中说明了

  

名称可能包含通配符      字符*,被认为匹配任何单个域名      组件或组件片段。例如,* .a.com匹配foo.a.com但是      不是bar.foo.a.com。 f * .com匹配foo.com但不匹配bar.com