我刚刚从去吧爸爸。我将证书设置为:
www.mydomainname.com(正如您所知,我更改了域名。)
我设置了 Apache,它正在运行。因此,当我输入时,https://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
当我想要安全请求时。
我做错了什么?
这是我的 Apache 配置:
在 sites-enabled 下(我使用 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>
答案1
检查您的 Apache 配置以确保您正在监听 HTTP 端口 80 和 HTTPS 端口 443。
在您的 中/etc/httpd/conf/httpd.conf
,您应该有“Listen 80”。您还应该有一个/etc/httpd/conf.d/ssl.conf
文件(可能)其中指定了“Listen 443”。
您需要配置虚拟主机,一个用于 *:80,另一个用于 *:443。*:443 中需要包含 SSL 规范,而 *:80 中不应包含 SSL 内容。
您没有购买错误的SSL认证。
答案2
您实际上需要配置 2 个 VHost,SSL VHost 和非 SSL VHost 的区别仅在于您实际放置在 VHost 中的 SSL 部分,因为您可能拥有多个 SSL VHost(监听不同的端口),所以在服务器范围的上下文中提供这一点实际上是没有意义的,我认为你正在这样做。
答案3
好的,我修好了。我之前没有弄混Virtualhost
。这是最终配置:
ssl 配置是:
<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>
Webapp 配置为:
<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>
答案4
如果您确实购买了错误的证书,而且这不仅仅是配置问题,那么最好的办法通常是取消/撤销您的证书并重新颁发。
大多数 CA 都有一项政策,即他们会在一定时期内(即 1 周)免费提供此项服务。
希望这可以帮助。