目前,我的服务器在https / ssl上运行了1个网站。问题是,当我启用第二个虚拟主机时,也使用https / ssl,我运行的第一个网站现在正在使用新网站的ssl证书。
我已经尝试将这两个网站放在一个vhost文件中,没有用,所以我改为制作了2个单独的文件。
以下是我的vhost配置文件:
(因为他们所处的命令,将网站命名为z网站和网站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才能使它工作。
服务器正在使用Ubuntu 16.04.2的AWS ece2上运行
当我输入终端时出现问题:
a2ensite websiteY.conf
当我这样做时,Z会丢失它的https证书,并会显示一个大红十字架,上面写着:不安全!当您单击继续时,它链接到websiteY
我有点选择,有人可以帮助我吗?谢谢!
答案 0 :(得分:0)
当您输入www.websiteZ.nl
而没有https
时,请求将首先被
<VirtualHost *:80>
ServerAlias *.websiteZ.nl
Redirect 301 / https://websiteZ.nl
</VirtualHost>
因此重定向到https://websiteZ.nl
由于您的:443
个虚拟主机都没有ServerName
或ServerAlias
配置websiteZ.nl
,因此将使用按字母顺序排列的第一个.conf文件中的一个,即在这种情况下,具有websiteY证书的那个。