【发布时间】: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>
这里的预期行为如下:
- 用户点击http://git.mclarkdev.com - 重定向到https://git.mclarkdev.com
- 用户点击https://git.mclarkdev.com - 正常响应
- 用户点击http://158.69.115.69 - 重定向到http://git.mclarkdev.com - 重定向到 https
- 用户点击https://158.69.115.69 - 他们会收到关于无效证书的安全警告,证书和虚拟主机是 git.mclarkdev.com。
我现在的问题是,在第四个用例中,我没有看到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