正确configuration虚拟主机SSL

我已经在我的Ubuntu EC2实例上安装了SSL证书,我需要通过https访问此实例上托pipe的网站之一。

我有几个网站通过虚拟主机托pipe在同一个IP上。 但是,我只需要通过https访问一个网站。

我相信以下几点:

  • SSL证书已正确安装
  • 端口443在EC2上打开

我很确定这些,因为当我在/ etc / apache2 / sites-enabled / mysslsite中尝试了以下虚拟主机configuration时,我可以通过https访问该站点。 问题是所有其他网站都因为只需通过https访问而被迫closures。 以下是虚拟主机configuration文件:

<VirtualHost *> ServerAdmin [email protected] DocumentRoot /var/www/mysslwebsite ServerName www.mysslwebsite.com ServerAlias mysslwebsite.com <Directory /var/www/mysslwebsite> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> <Directory /> Options FollowSymLinks AllowOverride all </Directory> SSLEngine on SSLCertificateFile /etc/ssl/apache2/mycertificate.com.crt SSLCertificateKeyFile /etc/ssl/apache2/mycertificate.key ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On </VirtualHost> 

有了这个configuration,虽然它位于这个特定的mysslwebsite虚拟主机configuration中,但是所有其他的网站都不会通过标准http加载,并且在通过http访问时显示以下消息:

 Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please. Hint: https://www.myothersite.com/ 

任何人都知道如何解决这个问题?

谢谢

– – – -编辑 – – – –

我尝试了以下虚拟主机:

 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/mysslsite ServerName www.mysslsiste.com ServerAlias mysslsite.com <Directory /var/www/mysslsite> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> <Directory /> Options FollowSymLinks AllowOverride all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On </VirtualHost> <VirtualHost *:443> ServerAdmin [email protected] DocumentRoot /var/www/mysslsist ServerName www.mysslsist.com ServerAlias mysslsist.com <Directory /var/www/mysslsist> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> <Directory /> Options FollowSymLinks AllowOverride all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On SSLEngine on SSLCertificateFile /etc/ssl/apache2/certificate.com.crt SSLCertificateKeyFile /etc/ssl/apache2/certificate.key </VirtualHost> #Another virtual host with another site <VirtualHost *> ServerAdmin [email protected] DocumentRoot /var/www/myothersite ServerName www.myothersite.com ServerAlias myothersite.com <Directory /var/www/myothersite> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> <Directory /> Options FollowSymLinks AllowOverride all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On </VirtualHost> 

但是,我无法通过SSL访问该网站。 我可以通过http访问它。

Apache在重新启动时显示以下警告:

NameVirtualHost *:443没有VirtualHosts NameVirtualHost *:80没有VirtualHosts

这很混乱,因为80端口有大约10个虚拟主机。

在我看来,你没有为虚拟主机指定443端口或80端口。 所以一切都朝着为SSLconfiguration的虚拟主机。 所以httpstream量不被接受,因为它被configuration为只接受SSL。 尝试这个

 NameVirtualHost *:80 <VirtualHost *:80> ServerName blah DocumentRoot /var/www/html/ </VirtualHost> <VirtualHost *:443> ... - your config here - ... </VirtualHost> 

你甚至可以为在端口80上运行的虚拟主机做一个redirect。也许像这样:

 Redirect permanent / https://<URL>