实现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的过程,若有什么地方错误,欢迎广大朋友指出!

最新文章

  1. mybatis:choose when otherwise标签
  2. CentOS7— Redis安装(转和延续)
  3. 关于mapreduce.map.java.opts
  4. WP8 学习 在APP.XAML中加入Resources
  5. UIWebView swift
  6. JS判断上传图片格式是否正确
  7. HDU 1573 X问题 中国剩余定理
  8. From windows live writer
  9. 【转】对于JNI方法名,数据类型和方法签名的一些认识
  10. CentOS Linux 系统 英文 改中文
  11. mongodb数据库安装
  12. Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示
  13. WebBrowser2控件使用
  14. Lab 6-3
  15. THUWC2018酱油记
  16. [转][CentOS]开机时
  17. 动态执行 VB.NET 和 C# 代码
  18. django-缓存的应用
  19. JSP中系统Date的几点不符合中国时间观的地方
  20. Openresty支持HTTP2

热门文章

  1. 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments
  2. layui 动态表格之合并单元格
  3. flask——CSRFToken保护
  4. Spring常用注解总结 hibernate注解
  5. 模拟select控件功能
  6. vb 运行ppt示例代码
  7. 什么是Spring Boot简介
  8. [bzoj1084][SCOI2005]最大子矩阵(DP)
  9. 在Electron中通过ffi模块实现JavaScript调用C++动态库
  10. 如何在eclipse中用maven编译