【问题标题】:Multiple domains and SSL : all domains use my SSL certificate but I don't want?多个域和 SSL:所有域都使用我的 SSL 证书,但我不想要?
【发布时间】:2016-05-21 20:15:51
【问题描述】:

我的 apache 服务器上有一个通配符 SSL 证书。它适用于我的域,但错误是它适用于我的 apache 服务器上的所有域!而且我不想要它,当我继续https://www.mywebsitewithouthttps.com 时,firefox 告诉我该页面不安全,因为证书适用于 www.mydomainwithhttps.com。如果我在浏览器上为此 SSL 错误添加例外,则显示的不是“mywebsitewithouthttps.com”而是“mydomainwithhttps.com”(在此 URL 上:https://www.mywebsitewithouthttps.com)!

我不希望我的证书适用于所有其他域!这是一个大问题,因为 Google 正在使用 mydomainwithhttps.com 的内容在 HTTPS 上抓取我的所有其他域并将其编入索引:-(

这是我的 SSL 虚拟主机:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName www.mydomainwithhttps.com    
    DocumentRoot "/home/mydomainwithhttps/www"

    suPHP_Engine On
    suPHP_AddHandler x-httpd-php
    suPHP_UserGroup mydomainwithhttps users
    AddHandler x-httpd-php .php

    SSLEngine on 
    SSLCertificateFile /certificates/ssl_certificate.crt
    SSLCertificateKeyFile /certificates/www.mydomainwithhttps.com.key
    SSLCACertificateFile /certificates/IntermediateCA.crt
</VirtualHost>

【问题讨论】:

  • 您有一个通配符 SSL 证书。 SSL 是一种安全传输。离题。

标签: apache ssl


【解决方案1】:

如果您发出 HTTPS 请求,客户端将与服务器上的相关 IP 和端口(通常为 443)建立 TCP 连接。如果连接成功,它将启动 TLS 握手,并且在 TLS 握手期间它将获取证书以进行验证。

如果您有多台服务器在同一个 IP 地址和端口,它们都共享同一个 TCP 侦听器。由于 TCP 连接尝试没有关于目标服务器名称的信息,而只有目标 IP 地址和端口,因此侦听器将接受所有连接尝试,即使(尚未知的)目标主机名没有配置 HTTPS。

现代客户端然后在 TLS 握手中发送目标主机名,然后服务器才知道客户端想要什么。如果它为请求的名称配置了 HTTPS,则服务器可以发送适当的证书。如果没有为此名称配置 HTTPS,服务器将发送默认证书或关闭连接(可能在关闭时发送 TLS 警报)。

总之,您有以下选择:

  1. 为 HTTPS 站点和非 HTTPS 站点使用不同的 IP 地址。这样 TCP 连接就会失败,因为服务器没有在这个 IP:port 上监听连接。
  2. 将您的服务器配置为在客户端请求未配置 HTTPS 的主机名时返回错误。这样,客户端可能会在浏览器中收到一些关于 HTTPS 问题的奇怪错误消息。我不确定,但也许您可以在使用 SSLStrictSNIVHostCheck on 选项时以这种方式设置 Apache。如果这个选项没有帮助,那么 apache 可能不支持这种设置。
  3. 只要名称不匹配或客户端不支持 SNI,请将您的服务器配置为使用默认证书(通常是第一个配置的证书)。客户端将在浏览器中收到证书不匹配警告。这是您当前的设置。
  4. 通过使用单独的证书或将它们全部包含在一个证书中,为 所有 域正确设置 HTTPS。

因此,为了确保漫游器不会假定您的网站可以使用 HTTPS,您需要使用选项 1 或 2。另请注意,在所有这些情况下,您希望漫游器支持 SNI,但并非全部做。因此,为了获得最佳兼容性,您需要为每个 HTTPS 站点使用单独的 IP 地址。

【讨论】:

    【解决方案2】:

    您可以按照multi donain with ssl在 UBUNTU 和 RHEL 上使用 SSL 和不同的证书配置多域

    【讨论】:

      【解决方案3】:

      问题是 Apache 会尝试查找 https://www.mywebsitewithouthttps.com/ 的配置,如果没有,它将默认返回第一个 https 配置(mydomainwithhttps 的配置)。

      这将显示一个证书错误,但正如您所经历的那样,如果您点击,您会看到错误的网站。

      但是,我无法理解 Google 会抓取网站并将其编入索引。我会认为当它看到证书错误时它会停止?如果不是这种情况,我会感到非常惊讶,但如果不是,您可以为这些主机名 a 设置重写规则以重定向回 http。

      解决这个问题只有两种方法:

      1. 获取其他域的证书,以便您可以通过 https 进行连接。如果你真的想要,你仍然可以重定向回 http。
      2. 使用 https 将服务器分离到不同的服务器(或同一服务器上的不同 IP 并设置 Apache 配置以仅侦听 https IP 地址上的端口 443)。

      这正是 Apache(以及大多数 - 如果不是全部 - 其他网络服务器)的工作方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        • 2017-07-04
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 2013-10-23
        • 1970-01-01
        相关资源
        最近更新 更多