我有两个域名:我的域名.com和我的域名.fr
我想按如下方式重定向流量:
- 我的域名.com:80 -> 我的域名.com:443
- 我的域名.fr:80 -> 我的域名.com:443
- 我的域名.fr:443 -> 我的域名.com:443
我选择只使用 .com,对吗?我想是的。因为我只需要管理一个证书:.COM 证书。
我的/etc/apache2/站点可用/默认:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.my-domain.com
ServerAlias my-domain.com
Redirect permanent / https://www.my-domain.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.my-domain.fr
ServerAlias my-domain.fr
Redirect permanent / https://www.my-domain.com
</VirtualHost>
我的/etc/apache2/站点可用/默认-ssl:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.my-domain.com
ServerAlias my-domain.com
DocumentRoot /var/www/my-domain/
ErrorLog /var/log/my-domain/my-domain.com.error.log
CustomLog /var/log/my-domain/my-domain.com.access.log combined
GnuTLSEnable on
GnuTLSPriorities NORMAL
GnuTLSExportCertificates on
GnuTLSCertificateFile /etc/apache2/ssl/certs/my-domain.com.crt
GnuTLSKeyFile /etc/apache2/ssl/private/my-domain.com.key
</VirtualHost>
<VirtualHost *:443>
ServerName www.my-domain.fr
ServerAlias my-domain.fr
DocumentRoot /var/www/my-domain/
ErrorLog /var/log/my-domain/my-domain.fr.error.log
CustomLog /var/log/my-domain/my-domain.fr.access.log combined
GnuTLSEnable on
GnuTLSPriorities NORMAL
GnuTLSExportCertificates on
GnuTLSCertificateFile /etc/apache2/ssl/certs/my-domain.fr.crt
GnuTLSKeyFile /etc/apache2/ssl/private/my-domain.fr.key
</VirtualHost>
但是当我访问 my-domain.fr 时出现了 SSL 证书错误,因为它告诉我我想访问 my-domain.fr 但是我没有。
答案1
恐怕您误解了事情发生的顺序。首先建立 SSL 连接,并且只有完成此操作后,HTTP 请求才会传递到服务器并获得重定向响应。
如果可以在检查服务器的 SSL 证书之前重定向到其他域,那么将任何访问者发送到任何随机域将非常容易。想象一下,如果一个简单的中间人攻击可以在没有 SSL 警告的情况下将用户重定向到其他网站,这会对在线银行网站造成什么影响……
最简单的解决方案是获取带有主题备用名称的证书,并列出要使用该证书的所有域。这样,您仍然只需要更新一个证书,但它将适用于您的所有域。
答案2
当你使用 HTTPS 时,你的网络服务器不知道请求的域名,因此它总是请求*:443 virtualhost
你配置的第一个域名。你需要 openssl-1.x信噪比上班。