一、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.crt和xx.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 *:>
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重写的更多相关文章

  1. ubuntu16.04服务器apache的ssl证书配置

    背景:在腾讯云申请的免费证书1年,服务器ubuntu 16.04版本,我的是多域名 1.ssl模块的安装 sudo a2enmod ssl //开启apache ssl模块 a2ensite defa ...

  2. 阿里云服务器Centos上Apache安装SSL证书配置Https

    首先我们先去阿里云申请一个免费的SSL证书(https://common-buy.aliyun.com/?spm=5176.7968328.1266638..5e971232BzMSp5&co ...

  3. linux ssl证书配置(apache)

    1. 前提是 已通过第三方 申请到 .crt .key 和 .ca-bundle 文件 2. 将三个文件拷贝到linux服务器上 任意一个指定的目录 3. 找到要编辑的apache配置 Apache主 ...

  4. 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)

    在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...

  5. Apache服务器安装SSL证书

    Apache服务器安装SSL证书 在证书控制台下载Apache版本证书,下载到本地的是一个压缩文件,解压后里面包含_public.crt文件是证书文件,_chain.crt是证书链(中间证书)文件,. ...

  6. [转帖]一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS

    一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS https://home.cnblogs.com/u/beyang/ 一台服务器,两个域名 首先购买https,获取到CA证 ...

  7. 安卓访问https错误,访问http可以,可能是nginx ssl证书配置有问题

    开发中遇到react-native生成的android访问UAT和开发环境的http api都可以,但是访问生产环境的https就报错,还有就是第三方webhook调用你https网站的api也可能会 ...

  8. 阿里云负载均衡SSL证书配置

    阿里云负载均衡SSL证书 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工作赶工.业务考察 ...

  9. 阿里云负载均衡SSL证书配置(更新)

    阿里云负载均衡及应用防火墙SSL证书配置 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工 ...

随机推荐

  1. task.delay 和 thread.sleep

    1.Thread.Sleep 是同步延迟. Task.Delay异步延迟. 2.Thread.Sleep 会阻塞线程,Task.Delay不会. 3.Thread.Sleep不能取消,Task.Del ...

  2. 二级索引-phoenix-单机部署

    下载 从下载地址下下载以下对应hbase版本的版本: phoenix-4.7.0-HBase-1.0/bin/phoenix-4.7.0-HBase-1.0-bin.tar.gz 安装部署 解压 ta ...

  3. 【转】Java压缩和解压文件工具类ZipUtil

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  4. 网络1911、1912 C语言第2次作业--循环结构 批改总结

    一.评分规则 伪代码务必是文字+代码描述,直接反应代码,每题扣1分 提交列表没内容,或者太简单,每题得分0分.注意选择提交列表长的题目介绍. 代码格式不规范,继续扣分. 代码互评,内容简单,0分. 原 ...

  5. redis扫描特定keys脚本,可避免阻塞,不影响线上业务

    #!/bin/sh ## 该脚本用来查询redis集群中,各个实例当中特定前缀的key,对应只需要修改redis的其中一个实例的 host和port## 脚本会自动识别出该集群的所有实例,并查出对应实 ...

  6. configprase模块,配置文件模块

    import configparser # config = configparser.ConfigParser() # config["DEFAULT"] = {'Port':3 ...

  7. LaTex&&markdown

    LaTeX在线编辑器:传送门 LaTeX常用公式整理(转载):传送门 Markdown洛谷教程(转载):传送门 Markdown基本语法(转载):传送门 Markdown数学符号和语法(转载):传送门 ...

  8. leetcode 34在排序数组中查找元素的第一个和最后一个位置

    class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { ve ...

  9. 安装 Genymotion及其破解版

    https://blog.csdn.net/sxk874890728/article/details/82721746 安装 Genymotion及其破解版 2018年09月16日 11:18:09  ...

  10. SSM004/工作内容

    一.java执行sql脚本 参考博客:java调用SQL脚本执行的方案 1.Service层代码:目的随spring容器启动即执行 //Service层代码 @Component public cla ...