我已经在我的Ubuntu EC2实例上安装了SSL证书,我需要通过https访问此实例上托pipe的网站之一。
我有几个网站通过虚拟主机托pipe在同一个IP上。 但是,我只需要通过https访问一个网站。
我相信以下几点:
我很确定这些,因为当我在/ 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>