我有两个Heroku应用程序层(一个生产和一个临时应用程序)
我的DNS配置为指向其中一个,具体取决于子域。
*.example.co
- > app-production
*.staging.example.co
- > app-staging
两者都启用了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
访问我的暂存应用然而
我强烈怀疑它是因为在配置暂存域时,DNS目标应该是SSL端点,而不是直接的heroku应用URL。
但我无法编辑。如果我做
> heroku domains:add *.staging.example.co --remote staging
它会自动为我添加DNS目标。在Prod上它会自动添加SSL端点。
有解决方法吗?
答案 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