我的一个虚拟主机似乎使用以下配置显示错误的证书:
<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子域会显示根证书?
点击地址和拖尾日志,我看到通过root vhost进入请求的条目
在CentOS 7上运行httpd,
服务器版本:Apache / 2.4.6(CentOS)
服务器内置:2016年11月14日18:04:44
答案 0 :(得分:0)
也许它与你有一个循环有关。
尝试更改<VirtualHost *:80>
,来自:
RewriteRule ^ http://git.mclarkdev.com [R=301,L]
到
RewriteRule ^ https://git.mclarkdev.com [R=301,L]
注意http s
答案 1 :(得分:0)
您不能将158.69.115.69
用作ServerAlias
。 ServerName
和ServerAlias
只应列出FQDN或通配符(例如*domain.com
)。
访问158.69.115.69
时,您实际上会使用默认的vhost或全局Apache conf,而不是git.mclarkdev.com
vhost。
然后,您获得mclarkdev.com
的默认服务器证书,当然,您的重写规则未应用,因为它仅在其他虚拟主机中定义。
您应该将此规则添加到默认虚拟主机中,以确保其余内容发生在您在此处共享的2个虚拟主机中。
您还可以更改vhosts顺序,并确保在git.mclarkdev.com
之前定义了2 mclarkdev.com
个vhost。在这种情况下,它将成为默认值并访问它,IP实际上就像访问git.mclarkdev.com
。
如果您使用sites-enabled
类似发行版配置,则可以重命名符号链接(例如,重命名您的虚拟主机文件000-something
)以确保它们首先包含在内。事实上,由于这个特定的原因,默认的vhost通常被称为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访问的。证书 仅基于名称。