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

  

  

最新文章

  1. vbox 虚拟机共享文件夹 debian
  2. Monotype推出基于HTML5的Web字体平台
  3. codeforces 580D:Kefa and Dishes
  4. js 进度条,可实现结束和重新开始
  5. 【iCore2 双核心板视频教程一】iM_LAN 100M 以太网模块UDP例程(包含视频教程)
  6. 修改datagridview中其中一列的值
  7. VS2012 编译GDAL
  8. WebApi2官网学习记录---单元测试
  9. window系统查看端口被哪个进程占用
  10. 轻量级分布式RPC框架
  11. MOSFET与MOSFET驱动电路原理及应用(转)
  12. Java 实现FTP上传和下载
  13. 嵌入式 RTP通话:视频流(H.264)的传输
  14. Django Rest Framework(认证、权限、限制访问频率)
  15. 《Inside C#》笔记(十三) 多线程 下
  16. [转帖] SQL参数化的优点 CopyFrom https://www.cnblogs.com/-lzb/articles/4840671.html
  17. 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
  18. iPhone开发之使用NSUserDefaults存储数据
  19. js图片压缩
  20. Cocos Creator 获取节点的方式

热门文章

  1. linux系统基础优化及高级操作命令
  2. 套接字之recvfrom系统调用
  3. spark 笔记 5: SparkContext,SparkConf
  4. 一些 postman
  5. 浏览器端-W3School-HTML:HTML DOM Anchor 对象
  6. PDFCrop裁剪PDF文档使用方法
  7. ListView的MyBaseAdapter的封装
  8. web基础知识汇总
  9. [flask]分页显示列表
  10. [VBA]利用正则表达式创建函数处理字符串