我刚刚从Go Daddy购买了SSL证书。 我设置证书是:
www.mydomainname.com(我改变了域名,你可以告诉。)
我设置了Apache,它正在工作。 所以当我inputhttps://www.mydomainname.com这一切工作。
然而:
当我键入http://www.mydomainname.com我从Apache得到这个错误:
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.
我希望能打字
http://www.mydomainname.com用于HTTP请求
和
https://www.mydomainname.com当我想要安全的请求。
我做错了什么?
这是我的Apacheconfiguration:
在网站启用(我正在使用Ubuntu的Apache设置)
我有文件称为ssl
<IfModule mod_ssl.c>; SSLEngine On SSLCertificateFile /etc/apache2/ssl/www.mydomainname.com.crt SSLCertificateKeyFile /etc/apache2/ssl/www.mydomainname.com.key </IfModule>
另一个叫webapp :
<IfModule mod_proxy_ajp.c> ProxyRequests On ProxyVia On <Location /> Order allow,deny Allow from all AuthType Basic AuthName "Restricted area" AuthUserFile /etc/apache2/passwd/access Require valid-user ProxyPass ajp://localhost:9999/ ProxyPassReverse ajp://localhost:9999/ </Location> <Location /uploader> Order allow,deny Satisfy Any Allow from all ProxyPass ajp://localhost:9999/uploader ProxyPassReverse ajp://localhost:9999/uploader </Location> </IfModule>
检查您的Apacheconfiguration,以确保您正在侦听端口80的HTTP和端口443的HTTPS。
在你的/etc/httpd/conf/httpd.conf ,你应该有“Listen 80”。 你也应该有一个/etc/httpd/conf.d/ssl.conf文件(可能),在其中指定“Listen 443”。
您需要configuration虚拟主机,一个用于*:80,一个用于*:443。 *:443需要具有SSL规范,*:80不应该有SSL的东西在里面。
您没有购买错误的SSLauthentication。
你实际上需要configuration2个VHosts,SSL VHost和非SSL VHost只有你实际放置在VHost中的SSL部分不同,因为你可能有很多SSL VHosts(听不同的端口),实际上并不会感觉提供这个在服务器广泛的上下文,我认为是你在做什么。
好的,我修好了。 我之前混淆了没有Virtualhost 。 这是最终configuration:
ssl的configuration是:
<VirtualHost *:443> DocumentRoot /var/www/ <IfModule mod_proxy_ajp.c> ProxyRequests On ProxyVia On <Location /> Order allow,deny Allow from all AuthType Basic AuthName "Restricted area" AuthUserFile /etc/apache2/passwd/site-access Require valid-user ProxyPass ajp://localhost:9999/ ProxyPassReverse ajp://localhost:9999/ </Location> <Location /uploader> Order allow,deny Satisfy Any Allow from all ProxyPass ajp://localhost:9999/uploader ProxyPassReverse ajp://localhost:9999/uploader </Location> </IfModule> <IfModule mod_ssl.c> SSLEngine On SSLCertificateFile /etc/apache2/ssl/www.mydomain.com.crt SSLCertificateKeyFile /etc/apache2/ssl/www.mydomain.com.key </IfModule> </VirtualHost>
Webappconfiguration是:
<VirtualHost *:80> DocumentRoot /var/www/ <IfModule mod_proxy_ajp.c> ProxyRequests On ProxyVia On <Location /> Order allow,deny Allow from all AuthType Basic AuthName "Restricted area" AuthUserFile /etc/apache2/passwd/site-access Require valid-user ProxyPass ajp://localhost:9999/ ProxyPassReverse ajp://localhost:9999/ </Location> <Location /uploader> Order allow,deny Satisfy Any Allow from all ProxyPass ajp://localhost:9999/uploader ProxyPassReverse ajp://localhost:9999/uploader </Location> </IfModule> </VirtualHost>
如果您真的购买了错误的证书,而不仅仅是configuration问题,那么最好的计划通常是取消/撤销您的证书并重新发布。
大多数的CA有一个政策,他们会免费做一段时间(即1周)。
希望这可以帮助。