【问题标题】:apache virtual host presenting incorrect certificateapache 虚拟主机显示不正确的证书
【发布时间】:2017-06-28 16:53:18
【问题描述】:

我的一个虚拟主机似乎提供了错误的证书,使用以下配置:

<VirtualHost *:80>                                                                        

        # Address                                                                         
        ServerName              git.mclarkdev.com                                         
        ServerAlias             158.69.115.69                         

        # Force Git                                                                       
        RewriteCond             %{HTTP_HOST} !^git\.mclarkdev\.com             [NC]       
        RewriteRule             ^ http://git.mclarkdev.com                     [R=301,L]  

        # Force Secure                                                                    
        RewriteCond             %{HTTPS}        !=on                                      
        RewriteRule             ^/?(.*)         https://git.mclarkdev.com/$1 [R,L]        
</VirtualHost>                                                                            

<VirtualHost *:443>                                                                       

        # Address                                                                         
        ServerName              git.mclarkdev.com                                         
        ServerAlias             158.69.115.69

        # Force Git                                                                       
        RewriteCond             %{HTTP_HOST} !^git\.mclarkdev\.com             [NC]       
        RewriteRule             ^ https://git.mclarkdev.com                     [R=301,L] 

        # Proxy Gogs                                                                      
        ProxyPass               /               http://git:3000/                          
        ProxyPassReverse        /               http://git:3000/                                                      

        # Certificates                                                                    
        SSLCertificateFile      /etc/ssl/certs/mclarkdev.com/git.mclarkdev.com.crt        
        SSLCertificateKeyFile   /etc/ssl/certs/mclarkdev.com/git.mclarkdev.com.key        
        SSLCACertificateFile    /etc/ssl/certs/mclarkdev.com/git.mclarkdev.com.ca-bundle  

        # SSL Config
        SSLEngine on
        SSLCipherSuite AES256+EECDH:AES256+EDH:AES128+EECDH:AES128+EDH
        SSLProtocol -ALL -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
        SSLHonorCipherOrder on
        SSLStrictSNIVHostCheck Off
        SSLCompression off
        SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire                                                                                                     
</VirtualHost>

这里的预期行为如下:

我现在的问题是,在第四个用例中,我没有看到git 的证书,而是我的根证书。

此服务器无法证明它是158.69.115.69;它的安全证书来自 mclarkdev.com

我的根域的虚拟主机与此非常相似,除了

ServerName              www.mclarkdev.com
ServerAlias             mclarkdev.com

尽管将 IP 地址定义为别名,为什么 git 子域会提供根证书?

点击地址和跟踪日志,我看到通过根虚拟主机进入的请求条目

在 CentOS 7 上运行 httpd,
服务器版本:Apache/2.4.6 (CentOS)
服务器建成时间:2016 年 11 月 14 日 18:04:44

【问题讨论】:

  • 如果这更适合ServerFault,请迁移。
  • 客户端如何使用无效证书加密Location 标头?
  • 你最终解决了这个问题吗?

标签: apache ssl virtualhost


【解决方案1】:

也许这与你有循环有关。

尝试更改&lt;VirtualHost *:80&gt;,来自:

RewriteRule ^ http://git.mclarkdev.com [R=301,L]

RewriteRule ^ https://git.mclarkdev.com [R=301,L]

注意https

【讨论】:

  • 我不确定这是否会按预期工作; Force Git 规则将在用户通过 IP 导航时匹配,并将重写为 git.mclarkdev.com,而 Force Secure 规则将重写任何不安全的请求,以确保安全。向用户提供错误的证书时,我仍然会遇到同样的问题。
【解决方案2】:

您不能将158.69.115.69 用作ServerAliasServerNameServerAlias 应该只列出 FQDN 或通配符(如 *domain.com)。

访问158.69.115.69 时,您实际上是使用默认虚拟主机或全局Apache conf,而不是git.mclarkdev.com 虚拟主机。

然后你会得到默认的服务器证书,mclarkdev.com,当然你的重写规则不会被应用,因为它只在其他虚拟主机中定义。

您应该将此规则添加到默认虚拟主机,以确保其余的发生在您在此处共享的 2 个虚拟主机中。

您还可以更改虚拟主机顺序并确保您的 2 个 git.mclarkdev.com 虚拟主机在 mclarkdev.com 一个之前定义。在这种情况下,它将成为默认值,访问它的 IP 实际上就像访问 git.mclarkdev.com

如果您使用类似发行版配置的sites-enabled,您可以重命名符号链接(例如,重命名您的虚拟主机文件000-something)以确保首先包含它们。事实上,出于这个特定原因,默认虚拟主机通常称为000-default,您可能还需要重命名它。

PS:请注意,尽管做了所有这些,您仍然可能在重定向之前收到 This server could not prove that it is 158.69.115.69; its security certificate is from git.mclarkdev.com. 警告, 仅仅是因为 https 并不意味着通过 IP 访问。证书 仅基于名称。

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 2013-01-27
    • 1970-01-01
    • 2014-11-13
    • 2013-02-04
    • 1970-01-01
    • 2016-04-14
    • 2021-04-17
    • 2011-01-31
    相关资源
    最近更新 更多