码迷,mamicode.com
首页 > Web开发 > 详细

ubuntu中apache的ssl证书配置及url重写

时间:2019-11-20 19:31:47      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:module   url重写   and   证书   耗资源   tar   ubuntu   tps   errorlog   

 

一、https原理

  借用网上的图(图片来源: https://www.cnblogs.com/xiohao/p/9054355.html ),用到了对称加密和非对称加密.

     技术图片

 

 

 二、ubuntu的apache中ssl证书配置

  我们得到的证书一般为以下三个文件

  •   xx.cn.key
  •   xx.cn_chain.crt
  •   xx.cn_public.crt

    网上有很多配置方法,本人只讲自己最习惯的方法

     1 合并xx.cn_public.crtxx.cn_chain.crt 文件,生成 xx.cn.pem文件, 注意: public的内容在上面,然后在下一行开始chain,如下

  技术图片

 

 

 

 

    

     2 配置ssl模块

sudo a2enmod ssl  

 

   

     3 在我们的虚拟主机配置文件 xx.conf (目录在/etc/apache2/sites-available/)下部分添加配置,如下     

  技术图片

 

 

 

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName www.xx.cn
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/xx/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on
        SSLCertificateFile      /etc/apache2/cert/minimgr/xx.cn.pem
        SSLCertificateKeyFile /etc/apache2/cert/minimgr/xx.cn.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>
</VirtualHost>
</IfModule>

     4 重启apache

 

sudo service apache2 restart

 

 

   到此,我们的ssl证书就配置完成了,在浏览器输入https://www.xx.cn即可正常访问

 

 

  三、url重写

 

 

  ① 如果我们想要直接输入www.xx.cn便可以自动访问https://www.xx.cn,免得每次输入https特别麻烦,怎么办呢?

     直接修改上述 xx.conf 文件(80+443端口虚拟主机配置文件,目录在/etc/apache2/sites-available/). 在80端口的配置部分最下方,添加如下

  技术图片

 

 

        RewriteEngine on
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
    

   这样,我们就能实现http自动转向https,当我们输入www.xx.cn便可以自动访问https://www.xx.cn.

 

 

 

  ② 如果我们希望我们的某个页面不会自动转https时,比如我们实行了计划任务,在本机每2分钟访问一次www.xx.cn/sync.php,我们完全信任这次访问,没必要用https(https更消耗资源),那么我们

对此访问增加例外,操作如下

 

        RewriteEngine on
        RewriteCond %{REQUEST_URI} !^/sync.php
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]

 

     这里进行说明的是, RewriteCond条件在不申明的情况下为and关系,当需要用到or关系时,需要在末尾加 [OR]

     这时,当我们访问www.xx.cn便可以自动访问https://www.xx.cn.而当我们访问www.xx.cn/sync.php时,却不做任何重定向

 

  

  

ubuntu中apache的ssl证书配置及url重写

标签:module   url重写   and   证书   耗资源   tar   ubuntu   tps   errorlog   

原文地址:https://www.cnblogs.com/bushuwei/p/11899789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!