目前我的服务器有 1 个网站在 https/ssl 上运行。问题是,当我启用第二个虚拟主机(也使用 https/ssl)时,我运行的第一个网站现在正在使用新网站的 ssl 证书。
我尝试将这两个网站放在一个虚拟主机文件中,但没有成功,所以我制作了 2 个单独的文件。
这是我的虚拟主机配置文件:
(将它们命名为 websiteZ 和 website Y 因为它们的字母顺序)
vhost当前运行的网站.conf
<VirtualHost *:80>
ServerAlias *.websiteZ.nl
Redirect 301 / https://websiteZ.nl
</VirtualHost>
NameVirtualHost *:443
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.websiteZ.nl
DocumentRoot "/var/www/html/websites/websiteZ.nl/public"
<Directory "/var/www/html/websites/websiteZ.nl/public">
Require all granted
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/websiteZ.nl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/websiteZ.nl/certificate.key
SSLCertificateChainFile /etc/apache2/ssl/websiteZ.nl/cabundle.crt
</VirtualHost>
</IfModule>
带有 ssl .conf 的新网站
<VirtualHost *:80>
ServerName websiteY.nl
ServerAlias www.websiteY.nl
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
DocumentRoot "/var/www/html/websites/websiteY.nl/public/"
<Directory "/var/www/html/websites/websiteY.nl/public/">
Require all granted
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.websiteY.nl
DocumentRoot "/var/www/html/websites/websiteY.nl/public"
<Directory "/var/www/html/websites/websiteY.nl/public">
Require all granted
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLStrictSNIVHostCheck on
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/websiteY.nl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/websiteY.nl/certificate.key
SSLCertificateChainFile /etc/apache2/ssl/websiteY.nl/cabundle.crt
</VirtualHost>
</IfModule>
ports.conf
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
我查了 SNI 的事情,但我想我错过了一些东西。我的理解是我必须使用 NameVirtualHost 才能使其工作。
服务器在 AWS ece2 上运行,操作系统为 Ubuntu 16.04.2
当我在终端输入时出现问题:
a2ensite websiteY.conf
当我这样做时,websiteZ 将丢失它的 https 证书,并会显示一个大红十字,上面写着:不安全!当您点击继续时,它会链接到网站Y
我有点没有选择,有人可以帮助我吗?谢谢!
当你输入
www.websiteZ.nl
而没有https
时,请求首先会被捕获
<VirtualHost *:80>
ServerAlias *.websiteZ.nl
Redirect 301 / https://websiteZ.nl
</VirtualHost>
因此重定向至
https://websiteZ.nl
由于您的
:443
虚拟主机均未配置 ServerName
或 ServerAlias
,因此将使用按字母顺序排列的第一个 .conf 文件中的那个,在本例中是带有 websiteY 证书的文件。