zoukankan      html  css  js  c++  java
  • ubuntu中apache的ssl证书配置及url重写

    一、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时,却不做任何重定向

      

      

  • 相关阅读:
    css 垂直居中
    pdf.js 标题修改
    electron 打包时文件复制到程序目录下
    js 高阶函数
    计算一个数字是否素数
    Object.assign()
    vue 路由页面 首次打开浏览器 返回上一页异常问题
    swagger使用报错:No enum constant org.springframework.web.bind.annotation.RequestMethod.get
    idea 关于查询的快捷键
    域渗透之CrackMapExec
  • 原文地址:https://www.cnblogs.com/bushuwei/p/11899789.html
Copyright © 2011-2022 走看看