实现https

环境

1.三台主机分别为A,B,C。

2.A主机设置为CA和DNS服务器,ip为192.168.213.129

3.B主机为client,ip为192.168.213.253

4.C主机为httpd server,ip为192.168.213.128

5.已经在三台主机上启动了httpd服务,并且可以正常访问自己的网页。

1.在A主机上创建CA和DNS服务器

  1. 1)创建所需要的文件
  2. 生成证书索引数据库文件:
  3. touch /etc/pki/CA/index.txt
  4. 系统会自动生成个index.txt.attr文件。用来决定是否使证书为唯一性,也就是是否可以重复申请证书。
  5. 指定第一个颁发证书的序列号:
  6. echo 01 > /etc/pki/CA/serial
  7. 2CA自签证书
  8. 生成私钥:
  9. cd /etc/pki/CA/
  10. openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
  11. chmod 600 cakey.pem
  12. 生成自签名证书:
  13. openssl req -new -x509 key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
  14. 3)创建DNS服务器
  15. 1vim /etc/named.conf
  16. options {
  17. listen-on port 53 { any ; };
  18. // listen-on-v6 port 53 { ::1; };
  19. directory "/var/named";
  20. dump-file "/var/named/data/cache_dump.db";
  21. statistics-file "/var/named/data/named_stats.txt";
  22. memstatistics-file "/var/named/data/named_mem_stats.txt";
  23. allow-query { any ; };
  24. recursion yes;
  25. dnssec-enable no;
  26. dnssec-validation no;
  27. dnssec-lookaside no
  28. 2》关闭防火墙和设置selinuxpermissive
  29. iptables -F
  30. setenforce 0
  31. 3》创建解析
  32. 1>vim /etc/named.rfc1912.zones
  33. zone "ab.com" IN {
  34. type master;
  35. file "ab.com.zone";
  36. };
  37. 2>named-checkconf
  38. 3>cd /var/named/
  39. 4>cp -a named.localhost ab.com.zone
  40. 5>vim ab.com.zone
  41. $TTL 1D
  42. @ IN SOA dns admin.ab.com. (
  43. 3 ; serial
  44. 1D ; refresh
  45. 1H ; retry
  46. 1W ; expire
  47. 3H ) ; minimum
  48. NS dns
  49. dns A 192.168.213.128
  50. websrv A 192.168.213.128
  51. mail A 192.168.213.128
  52. www CNAME websrv
  53. 6>named-checkzone ab.com /var/named/ab.com.zone
  54. 7>重新加载
  55. rndc reload
  56. service named reload or systemctl reload named
  57. 不行的话清除服务缓存,再来一遍
  58. rndc flush
  59. 最有效的方式是重启服务(正常工作中尽量别这么用,怕影响其他的同步)
  60. service named restart or systemctl restart named
  61. 8>rndc status

2.在C主机

  1. 1)指向DNS服务器
  2. vim /etc/resolv.conf
  3. nameserver 192.168.213.129
  4. 测试:
  5. dig -t A www.ab.com
  6. 2)向CA申请证书
  7. 1》生成证书请求
  8. 生成私钥:
  9. (umask 066; openssl genrsa -out /etc/pki/tls/private/http.key 2048)
  10. 生成证书申请文件:
  11. openssl req -new -key /etc/pki/tls/private/http.key -days 365 -out /etc/pki/tls/http.csr
  12. 2》将证书请求文件传输给CA
  13. scp /etc/pki/tls/http.csr root@192.168.213.129:

3.在A主机

  1. 1CA签署证书:
  2. openssl ca -in /tmp/http.csr out /etc/pki/CA/certs/http.crt -days 365
  3. 注意:
  4. 默认国家,省,公司名称三项必须和CA一致,但可以修改/etc/pki/tls/openssl.cnf
  5. common name要使用此主机在通信真实使用的名字
  6. 2CA证书和CA签署的证书发送给C主机,然后在C主机上进行配置。
  7. scp /etc/pki/CA/certs/http.crt root@192.168.213.128:
  8. scp /etc/pki/CA/private/cakey.pem root@192.168.213.128:

4.在C主机

  1. 1od_ssl模块
  2. yum -y install mod_ssl
  3. 2d_ssl进行配置,配置文集为ssl.conf
  4. vim /etc/httpd/conf.d/ssl.conf
  5. DocumentRoot "/var/www/html"
  6. SSLCertificateFile /etc/pki/tls/certs/httpd.crt
  7. SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
  8. SSLCACertificateFile /etc/pki/CA/cacert.pem
  9. 注:
  10. 注意文件的路径,你放在那里就写成什么路径。
  11. 3)重启服务,并进行测试
  12. service httpd restart or systemctl restart httpd
  13. curl --cacert /path to/cacert.pem https://www.ab.com

5.在B主机

  1. 1vim /etc/resolv.conf
  2. nameserver 192.168.213.128 (尽量就填写一个)
  3. 2》测试
  4. curl www.ab.com
  5. 3CA证书导入
  6. 1A证书从A主机上拷贝过来
  7. scp root@192.168.213.129:/etc/pki/CA/cacert.pem /root/
  8. 2》测试
  9. curl --cacert /root/cacert.pem https://www.ab.com

当在B主机上测试成功时,这个https就大致实现了。不过呢,一般都设置个强制跳转,也就是http直接跳到https上。

6.http重定向https(强制跳转)

  1. C主机上
  2. vim /etc/httpd/conf/httpd.conf
  3. Redirect temp|permanent / https://www.ab.com
  4. 注:
  5. temp为临时跳转代号302permanent为永久跳转代号301,二者二选一。
  6. service httpd restart or systemctl restart httpd

实际上,在实际运行中不是用上面的方法来把http重定向为https的,而是采用HSTS。HSTS使http调整到https的过程中没有网络过程,减少请求次数,节约了网络资源,所以应用更为广泛。

7.HSTS实现http重定向https

  1. C主机上
  2. vim /etc/httpd/conf/httpd.conf
  3. Header always set Strict-Transport-Security "max-age=15768000"
  4. RewriteEngine on
  5. RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
  6. service httpd restart or systemctl restart httpd

到此为止,上述就是整个实现https的过程,若有什么地方错误,欢迎广大朋友指出!

实验:实现https的更多相关文章

  1. Orders matters: seq2seq for set 实验

    论文提出了input的顺序影响seq2seq结果 有一些输入本身是无序的怎么去处理呢 作者提出LSTM controller的方式 替代输入的LSTM encode方式         作者实验这种方 ...

  2. ucoreOS_lab 1~8 实验报告导航

    所有的实验已经全部完成,实验的源代码及报告都在 Github 上,欢迎大家批评指正,如果觉得对你有帮助的话,欢迎为此项目 star & watch & fork 三连,让更多的朋友们看 ...

  3. 2018-2019-2 20175223 实验三《敏捷开发与XP实践》实验报告

    目录 北京电子科技学院(BESTI)实验报告 实验名称:实验三 敏捷开发与XP实践 实验内容.步骤与体会: 一.实验三 敏捷开发与XP实践-1 二.实验三 敏捷开发与XP实践-2 三.实验三 敏捷开发 ...

  4. linux系统 (实验二)实验楼的课程笔记

    who am i  打印用户名和终端 终端的启动时间 whoami    打印用户名 who 命令其它常用参数 参数 说明 -a 打印能打印的全部 -d 打印死掉的进程 -m 同am i,mom li ...

  5. 科软-信息安全实验1-ICMP重定向

    目录 一 前言 二 Talk is cheap, show me the code 三 效果演示 四 遇到的问题&解决 一 前言 文章不讲解理论知识哈,想学习理论知识的,认真听课

  6. 《数字信号处理》课程实验2 – FIR数字滤波器设计

    一.FIR数字滤波器设计原理  本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...

  7. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)

    实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...

  8. bitbar 网站攻击实验

    实验环境 https://github.com/TouwaErioH/security/tree/master/web1 Windows10 Oracle VM VirtualBox Ubuntu16 ...

  9. 缓冲区溢出实验 1 strcpy

    实验代码 https://github.com/TouwaErioH/security/tree/master/stack%20overflow 实验目的 Buffer over flow 漏洞利用实 ...

  10. 关于ucore实验一的资料查找

    任务:阅读实验一makefile 搞清楚ucore.img是如何构建的 $@  $<  $^  这三个变量分别是什么意思 https://blog.csdn.net/YEYUANGEN/arti ...

随机推荐

  1. C# 反向生成工具(DAL BLL Modle)

    VS2015  ADO.NET无果后果断~! 动软生成:http://pan.baidu.com/s/1gfIf0ZL

  2. TensorBoard使用

    关于TensorBoard的安装是在安装Tensorflow的过程中就已经默认安装好了,所以安装了Tensorflow就不需要再安装TensorBoard,直接使用就可以了. 具体的使用方法: 命令行 ...

  3. 定时任务之crontab命令

    1.简介 crontab用于设置周期性被执行的命令 Linux系统中Linux调动工作分为两大类: 1.系统执行的工作:系统周期性所要执行的工作,如备份系统数据.清理缓存 2.个人执行的工作:某个用户 ...

  4. 三种计算c#程序运行时间的方法

    三种计算c#程序运行时间的方法 第一种: 利用 System.DateTime.Now // example1: System.DateTime.Now method DateTime dt1 = S ...

  5. 201521123084 《Java程序设计》第14周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结数据库相关内容. answer: 2. 书面作业 1. MySQL数据库基本操作 1.1 建立数据库test.表studen ...

  6. 团队作业4——第一次项目冲刺(Alpha版本)4.28

    团队作业4--第一次项目冲刺(Alpha版本) Day seven: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第七天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今 ...

  7. 杨晨露 Java 第一周总结

    1.学习内容总结 (1)Integer类在对象中包装了一个基本类型int的值.Integer类型的对象包含一个int类型的字段.该类提供了多个方法,能在int类型和String类型之间互相转换,还提供 ...

  8. 201521123069 《Java程序设计》 第12周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 Q1.将Student对象(属性:int id, String name,int age,doub ...

  9. java 程序编写规则(自己总结)

    1.命名规范 (1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z).数字(0-9)和下划线"_". (2)类名是一个名词,采用大小写混合的方式,每个单词的首字母大写.例如:Us ...

  10. [js高手之路]Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件

    接着这篇文章[js高手之路]Node.js+jade抓取博客所有文章生成静态html文件继续,在这篇文章中实现了采集与静态文件的生成,在实际的采集项目中, 应该是先入库再选择性的生成静态文件.那么我选 ...