apache下https配置
准备工作
证书准备好,我用的是阿里云
进入控制台,安全下CA证书
点击下载证书,附上阿里云教程,我没成功
配置
1、找到Apache安装目录
由于我的服务器系统是Ubuntu,没有httpd.conf文件,故在apache2.conf(主要配置)下进行位置,也可以自己新建http.conf然后引入到apache2.conf
2、将下载的证书放到服务器上
这里我新建了cert文件夹
3、编辑apache2.conf
底部加入以下代码(目录可能因操作环节,安装不同而不同)
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
#监听443端口,https默认端口为443
Listen 443
<VirtualHost *:443>
ServerName www.abc.com(你的域名)
ServerAlias www.abc.com(你的域名)
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8089/
ProxyPassReverse / http://localhost:8089/
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile cert/public.pem
# 证书私钥配置
SSLCertificateKeyFile cert/214745469340830.key
# 证书链配置,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile cert/chain.pem
< /VirtualHost>
大功告成,打开浏览器,带上你的https域名访问吧。
http强制转发到https下
添加 .htaccess文件
默认情况下,apache的80端口网站目录是/var/www/html
我们在/var/www/html下创建 .htaccess文件
添加以下内容
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.php
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
遇到的坑
刚开始的想法是,既然http的默认端口是80,https的默认端口是443,那么当不以https访问的时候,我将代理转发到同服务器443端口上。
#<VirtualHost *:80>
# ServerName abc.com
# ServerAlias abc.com
# ProxyPreserveHost On
# ProxyRequests Off
# ProxyPass / http://localhost:443/
# ProxyPassReverse / http://localhost:443/
#</VirtualHost>
结果是:刚一开始是成功的,过了几秒apache拦截掉了,再也无法访问成功