apache下https配置以及http强制转发到https下,apachehttps


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拦截掉了,再也无法访问成功

相关内容

    暂无相关文章