实现https
实现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)创建所需要的文件
生成证书索引数据库文件:
touch /etc/pki/CA/index.txt
系统会自动生成个index.txt.attr文件。用来决定是否使证书为唯一性,也就是是否可以重复申请证书。
指定第一个颁发证书的序列号:
echo 01 > /etc/pki/CA/serial
2)CA自签证书
生成私钥:
cd /etc/pki/CA/
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
chmod 600 cakey.pem
生成自签名证书:
openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
3)创建DNS服务器
1》vim /etc/named.conf
options {
listen-on port 53 { any ; };
// listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any ; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
2》关闭防火墙和设置selinux为permissive
iptables -F
setenforce 0
3》创建解析
1>vim /etc/named.rfc1912.zones
zone "ab.com" IN {
type master;
file "ab.com.zone";
};
2>named-checkconf
3>cd /var/named/
4>cp -a named.localhost ab.com.zone
5>vim ab.com.zone
$TTL 1D
@ IN SOA dns admin.ab.com. (
3 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns
dns A 192.168.213.128
websrv A 192.168.213.128
mail A 192.168.213.128
www CNAME websrv
6>named-checkzone ab.com /var/named/ab.com.zone
7>重新加载
rndc reload
service named reload or systemctl reload named
不行的话清除服务缓存,再来一遍
rndc flush
最有效的方式是重启服务(正常工作中尽量别这么用,怕影响其他的同步)
service named restart or systemctl restart named
8>rndc status
2.在C主机
1)指向DNS服务器
vim /etc/resolv.conf
nameserver 192.168.213.129
测试:
dig -t A www.ab.com
2)向CA申请证书
1》生成证书请求
生成私钥:
(umask 066; openssl genrsa -out /etc/pki/tls/private/http.key 2048)
生成证书申请文件:
openssl req -new -key /etc/pki/tls/private/http.key -days 365 -out /etc/pki/tls/http.csr
2》将证书请求文件传输给CA
scp /etc/pki/tls/http.csr root@192.168.213.129:
3.在A主机
1)CA签署证书:
openssl ca -in /tmp/http.csr –out /etc/pki/CA/certs/http.crt -days 365
注意:
默认国家,省,公司名称三项必须和CA一致,但可以修改/etc/pki/tls/openssl.cnf
common name要使用此主机在通信真实使用的名字
2)CA证书和CA签署的证书发送给C主机,然后在C主机上进行配置。
scp /etc/pki/CA/certs/http.crt root@192.168.213.128:
scp /etc/pki/CA/private/cakey.pem root@192.168.213.128:
4.在C主机
1)od_ssl模块
yum -y install mod_ssl
2)d_ssl进行配置,配置文集为ssl.conf
vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html"
SSLCertificateFile /etc/pki/tls/certs/httpd.crt
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
SSLCACertificateFile /etc/pki/CA/cacert.pem
注:
注意文件的路径,你放在那里就写成什么路径。
3)重启服务,并进行测试
service httpd restart or systemctl restart httpd
curl --cacert /path to/cacert.pem https://www.ab.com
5.在B主机
1》vim /etc/resolv.conf
nameserver 192.168.213.128 (尽量就填写一个)
2》测试
curl www.ab.com
3)CA证书导入
1》A证书从A主机上拷贝过来
scp root@192.168.213.129:/etc/pki/CA/cacert.pem /root/
2》测试
curl --cacert /root/cacert.pem https://www.ab.com
当在B主机上测试成功时,这个https就大致实现了。不过呢,一般都设置个强制跳转,也就是http直接跳到https上。
6.http重定向https(强制跳转)
在C主机上
vim /etc/httpd/conf/httpd.conf
Redirect temp|permanent / https://www.ab.com
注:
temp为临时跳转代号302,permanent为永久跳转代号301,二者二选一。
service httpd restart or systemctl restart httpd
实际上,在实际运行中不是用上面的方法来把http重定向为https的,而是采用HSTS。HSTS使http调整到https的过程中没有网络过程,减少请求次数,节约了网络资源,所以应用更为广泛。
7.HSTS实现http重定向https
在C主机上
vim /etc/httpd/conf/httpd.conf
Header always set Strict-Transport-Security "max-age=15768000"
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
service httpd restart or systemctl restart httpd
到此为止,上述就是整个实现https的过程,若有什么地方错误,欢迎广大朋友指出!
实现https的更多相关文章
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- 7.让网站支持http和https的访问方式
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 怎么让网站在本地支持SSL?http://www.c ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS
一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...
- WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果
前言 话说又来需求了,之前对于在SelfHost中需要嵌套页面并操作为非正常需求,这回来正常需求了,客户端现在加了https,老大过来说WebAPi访问不了了,这是什么情况,我去试了试,还真是这个情况 ...
- 苹果强制使用HTTPS传输了怎么办?——关于HTTPS,APP开发者必须知道的事
WeTest 导读 2017年1月1日起,苹果公司将强制使用HTTPS协议传输.本文通过对HTTPS基础原理和通信过程内容的讲解,介绍APP开发者在这个背景下的应对办法. 几周前,我们在<htt ...
- 【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】
今天公司有个网站需要改用https访问,所以就用到SSL证书.由于沃通(以前我是在这里申请的)暂停了免费的SSL证书之后,其网站推荐了新的一个网站来申请证书,所以,今天因为刚好又要申请一个证书,所以, ...
- https 安全验证问题
最近为了满足苹果的 https 要求, 经过努力终于写出了方法 验证 SSL 证书是否满足 ATS 要求 nscurl --ats-diagnostics --verbose https://你的域名 ...
- Ubuntu下配置apache开启https
一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那ht ...
随机推荐
- Loadrunner12 安装与卸载
卸载:http://www.51testing.com/html/21/303921-216608.html 安装包下载: loadrunner12安装包下载:链接:https://pan.baidu ...
- 关闭的连接: next
1.最近做了一个项目,扫描读取了第三方数据库的数据,结果本来在公司测试没有问题的程序在客户那边一直报如下错误: java.sql.SQLException: 关闭的连接: next 代码如下: //第 ...
- 更改Visual Studio Code为中文字体最有效的方法
更改Visual Studio Code为中文字体最有效的方法. 网址: https://marketplace.visualstudio.com/search?target=VSCode& ...
- NOIP2016 DAY1 T2天天爱跑步
传送门 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 ...
- static private 与 final 的用法总结
1.static表示静态.他是属于类的.可以在本身类里直接调用,或在其它类里用类名.方法名调用.不加static表示是实例的方法,必须用实例来调用.在本类里也一样,必须用实例调用 2.private是 ...
- 脚本开头,python预编译,控制台输入输出,for,while循环,分支判断,break,continue
3. name = input("name:")与2.x中raw_input一回事, 注意接收的变量全部默认为字符串类型. 从控制台接收用户输入,而密文输入import getpa ...
- 将登录代码模块化,然后用add address接口来调用它,success!
登录模块,单独写成mylogin()方法,保存为modeltry119.py,然后接口的文件只写接口, 在post请求时,引用mylogin()返回的cookies就好了. requests.post ...
- POJ 1655 Balancing Act && POJ 3107 Godfather
题目大意: 根据题目的图很好理解意思,就是记录每一个点的balance,例如 i 的balance就是把 i 从这棵树中除去后得到的森林中含有结点数最多 的子树中的节点个数,然后找到所有节点中对应的b ...
- J2EE 课件2
1.JSP页面可由5种元素组合而成: ① 普通的HTML标记符: ② JSP标记,如指令标记.动作标记: ③ 变量和方法的声明: ④ Java程序片: ⑤ Java表达式 2.声明变量和方法 JSP页 ...
- hdu3303
分析:一个最暴力的想法是把加入到集合S的数据一个个按顺序保存起来,然后每次查询的时候由后向前计算余数,如果遇到余数为0的,就直接把时间输出,否则就一直比较到最后找余数最小时间最晚的,这样查询的时间复杂 ...