apache虚拟主机提供不正确的证书

apache虚拟主机提供不正确的证书,apache,ssl,virtualhost,Apache,Ssl,Virtualhost,我的一个虚拟主机似乎使用以下配置提供了错误的证书: <VirtualHost *:80> # Address ServerName git

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

<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子域会显示根用户的证书,尽管将IP地址定义为别名

点击地址和跟踪日志,我看到请求条目通过根vhost传入

在CentOS 7上运行httpd,
服务器版本:Apache/2.4.6(CentOS)

服务器构建:2016年11月14日18:04:44

也许这与你有一个循环有关

尝试在
中从以下位置进行更改:

重写规则^http://git.mclarkdev.com    [R=301,L]

重写规则^https://git.mclarkdev.com    [R=301,L]


注意https

您不能将
158.69.115.69
用作
服务器别名
ServerName
ServerAlias
应仅列出FQDN或通配符(如
*domain.com

当访问
158.69.115.69
时,您实际上会点击默认vhost或全局Apache配置,但不会点击
git.mclarkdev.com
vhost

然后,您将获得默认的服务器证书,用于
mclarkdev.com
,当然,您的重写规则不适用,因为它仅在其他vhost中定义

您应该将此规则添加到默认vhost中,以确保其余部分发生在您在此处共享的2个vhost中

您还可以更改vhosts顺序,并确保在
mclarkdev.com
vhosts之前定义了2
git.mclarkdev.com
vhosts。在这种情况下,它将成为默认的IP地址,访问它实际上就像访问git.mclarkdev.com

如果您使用像distro config这样的启用了
站点
,您可以重命名符号链接(例如,重命名vhosts文件
000某物
),以确保首先包含它们。事实上,出于这个特定的原因,默认vhost通常被称为
000 default
,您可能也需要重命名它

注意,尽管做了所有这些,你仍然可能得到一个

服务器无法证明它是158.69.115.69;其安全性
证书来自git.mclarkdev.com。
重定向前警告, 只是因为https并不意味着通过IP访问。证书 仅基于名称


我不确定这是否会如预期的那样起作用;当用户通过IP导航时,
Force Git
规则将匹配,并将重写到
Git.mclarkdev.com
,而
Force Secure
规则将重写任何不安全的请求,以确保安全。如果向用户提供了错误的证书,我仍然会遇到同样的问题。如果这在上更合适,请迁移。客户端如何使用无效证书对
位置
头进行加密?您最终解决了这个问题吗?
ServerName              www.mclarkdev.com
ServerAlias             mclarkdev.com