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

      

      

  • 相关阅读:
    CentOS编译安装OpenCV fang
    Ubuntu下编译安装OpenCV fang
    OpenCV4 轮廓检测 快速入门 fang
    CentOS编译安装Nginx fang
    echarts图中动态加载、悬浮框(tooltip)中嵌套echarts
    oracle批量插入数据的实验有一个注意细节
    oracle中 ORA01950: 对表空间 'K3CLOUD_DATA' 无权限 报错处理
    Linux中 du 命令,查看目录大小
    把excel中的数据导入到oracle数据库中的操作步骤比较常用
    数字证书编码ASN.1
  • 原文地址:https://www.cnblogs.com/bushuwei/p/11899789.html
Copyright © 2020-2023  润新知