【问题标题】:Virtualhost redirect non-existent subdomains虚拟主机重定向不存在的子域
【发布时间】:2018-12-13 20:05:46
【问题描述】:

我有一个来自 LetsEncrypt 的 *.example.com 通配符证书。

我想捕获所有不存在的子域并将它们重定向到example.com。因此,示例之前的所有内容。 sadsdadasdwdasd.example.com => https://example.com

这行得通:

www.something.example.com => https://example.com
http://www.something.example.com  => https://example.com
https://something.example.com => https://example.com

但我有一个问题:https://www.something.example.com

包含 www 后,我无法将此子域重定向回 example.com,它显示此 ssl 错误:ERR_CERT_COMMON_NAME_INVALID

因为如果有人在url里面输入https://www,就不行了。

问题出在哪里?

【问题讨论】:

    标签: ssl https subdomain virtualhost


    【解决方案1】:

    通配符 (*) 只匹配一个标签,而不是整个结构。

    https://en.wikipedia.org/wiki/Wildcard_certificate:

    由于通配符仅涵盖一级子域(星号与句号不匹配),[4] 这些域对证书无效:

    test.login.example.com

    因此,您的 *.example.com 证书将永远不会匹配主机名 www.something.example.com。不,您不能拥有*.*.example.com 的证书。

    【讨论】:

    • 我应该为每个子域生成一个新的通配符证书吗?
    • @MarkJ。对于通过 HTTPS 提供的所有名称,您需要一个在服务器发送的证书的 SNA 条目列表中具有匹配名称的证书。匹配的名称可以是准确的名称,也可以是任何通配符,其中* 替换了单个标签。因此,您要么需要将每个名称按原样放在一个或多个证书中,要么确实为每个子域创建通配符,如果您可以列出它们的话。否则你的生活会更复杂:你需要一种在 HTTPS 请求到来时动态生成证书的方法,这可能也意味着控制客户端使用的 CA。
    • 所以。 example.com 的一个通配符证书。另一个全新的 subdomain.example.com 通配符证书。这是正确的吗?
    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 2014-08-21
    • 2019-04-16
    • 2015-11-18
    • 2011-12-15
    • 2012-01-01
    • 2012-03-29
    相关资源
    最近更新 更多