2016-12-02 35 views
1

要启用SSL,我注释掉这条线在httpd.conf:运行SSL和非SSL站点同时MAMP(4.0.6)

# Secure (SSL/TLS) connections 
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf 

安装httpd-ssl.conf中文件本身我VE保持不变,并创造.CRT和.KEY文件自签署的SSL证书在该公司预计,在默认情况下看到他们的地方:

SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt" 
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key" 

回到主httpd.conf中,我创建了一个VirtualHost为我想要使用SSL的站点,并且这样配置以最终得到它的工作:

NameVirtualHost * 
<VirtualHost *> 
DocumentRoot "/Users/jonnott/Documents/sslsite1.dev" 
ServerName sslsite1.dev:443 
ServerAlias www.sslsite1.dev 
SSLEngine on 
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt" 
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key" 
</VirtualHost> 

此SSL网站现在工作正常。

不过,我的问题是,现在每当我试图访问任何地方非SSL的主机,我得到这个错误:

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. 

这些其他非SSL站点在httpd.conf配置一样这个:

<VirtualHost *> 
DocumentRoot "/Users/jonnott/Documents/site2.dev" 
ServerName site2.dev 
ServerAlias www.site2.dev 
</VirtualHost> 

我在想什么/做错了什么?

+0

尝试限制使用''代替'' –

+0

要继续理解@AnandBhat的说法,您需要两个虚拟主机:一个用于http,另一个用于https。请参阅http://serverfault.com/a/253247/367929了解它的外观。 –

+0

@AnandBhat这不会有任何不同,不幸的是:( –

回答

2

我觉得我已经差不多了它看完这个:

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

我需要这二者都在我的httpd.conf我的VirtualHost指令开始之前:

NameVirtualHost *:80 
NameVirtualHost *:443 

..然后每个VirtualHost需要端口特定:

<VirtualHost *:80> 
DocumentRoot "/Users/jonnott/Documents/Projects/site1" 
ServerName site1.dev:80 
</VirtualHost> 
<VirtualHost *:443> 
DocumentRoot "/Users/jonnott/Documents/Projects/site1" 
ServerName site1.dev:443 
SSLEngine on 
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt" 
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key" 
</VirtualHost>