1、画出TLS链路的通信图
TLS:Transport Layer Security 安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性
- TLS会话主要三步:
- 1、客户端向服务器端索要并验证证书
- 2、双方协商生产“会话密钥”
- 3、双方采用“会话密钥”进行加密通信
- 又分为如下阶段:
第一阶段:ClientHello
告知服务端当前客户端支持的协议版本,比如tls 1.2
客户端并生产一个随机数,发送给服务端,该随机数稍后用户生产“会话密钥”
告知服务端当前客户端支持的支持的加密算法,比如AES,3DES,RSA
告知服务端当前客户端支持的支持的支持的压缩算法第二阶段:ServerHello
确认使用的加密通信协议版本,并告诉客户端,比如tls 1.2
服务端也生产一个随机数,发送给客户端,该随机数也是稍后用于生产“会话密钥”
确认使用的加密方法,并告知客户端
发送服务段证书,给到客户端
请求客户端提供证书(该步可以省略)第三阶段:
客户端验证服务端证书,在确认无误后取出其公钥(发证机构,证书完整性,证书持有者,证书有效期,吊销列表)
发送一下信息给服务端:
一个随机数
编码变更通知
客户端握手结束通知
发送客户端证书(该步依赖服务端是否请求证书)第四阶段:
服务端收到客户端发来的第三个随机数后,计算生成本次会话所用到的“会话密钥”
客户端根据这三个随机数,计算生成本次会话所用到的“会话密钥”
向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送
服务端握手结束通知
2、如何让浏览器识别自签的证书
- 1、搭建私有CA服务器
1、生成私钥
[root@node01 ~]# cd /etc/pki/CA/private/
[root@node01 private]# (umask 077;openssl genrsa -out cakey.pem 4096)
[root@node01 private]# ls
cakey.pem
2、生成自签证书
-new:生成新证书签署请求
-x509:生成自签格式证书,专用于创建私有CA时
-key:生成请求时用到的私有文件路径
-out:生成的请求文件路径,如果自签操作将直接生成签署过的证书
-days:证书的有效时长,单位是day这里是10年
[root@node01 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
[root@node01 ~]# ls -l /etc/pki/CA/cacert.pem
-rw-r--r--. 1 root root 2130 2月 14 10:13 /etc/pki/CA/cacert.pem
3、为CA提供所需要的目录及文件
[root@node01 ~]# mkdir -pv /etc/pki/CA/{certs.crl.newcerts}
[root@node01 ~]# touch /etc/pki/CA/{serial,index.txt}
[root@node01 ~]# echo 01>/etc/pki/CA/serial
- httpd服务器向CA请求签署证书
1、用到证书的主机生成证书签署请求
[root@node01 ~]# mkdir -pv /etc/httpd/ssl
[root@node01 ~]# cd /etc/httpd/ssl
[root@node01 ssl]# (umask 077;openssl genrsa -out testweb.key 2048)
2、生成证书签署请求
[root@node01 ssl]# openssl req -new -key testweb.key -out testweb.crs -days 365
#将请求通过可靠方式发送给CA主机,我这里是同一台主机,不同主机可以用scp
3、在CA主机上签署证书
[root@node01 ~]# openssl ca -in /etc/httpd/ssl/testweb.crs -out /etc/pki/CA/certs/testweb.crt -days 365
4、查看证书中的信息:
[root@node01~]# openssl x509 -in testweb.crt -noout -serial -subject
serial=02
subject= /C=CN/ST=shenzhen/O=peaoguo.com/OU=ops/CN=www.xiaofeng.com/emailAddress=mail.xiaofeng.com
[root@nodeo1 ~]#
-
3 浏览器导入CA服务器自签证书到受信任的根证书颁发机构
-
导入证书
-
查看证书
-
4 配置httpd服务器支持https并使用私有服务器颁发的证书
1、配置httpd服务修改ssl.conf中认证配置
[root@node01 ~]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/ssl/testweb.crt
SSLCertificateKeyFile /etc/httpd/ssl/testweb.key
[root@node01 ~]# systemctl restart httpd
- 5 window客户端配置
编辑window客户端hosts文件通过域名访问 www.xiaofeng.com
注意:域名一定是CA服务器签证时的域名,可以在CA服务器查看证书
[root@node01~]# openssl x509 -in testweb.crt -noout -serial -subject
serial=02
subject= /C=CN/ST=shenzhen/O=peaoguo.com/OU=ops/CN=www.xiaofeng.com/emailAddress=mail.xiaofeng.com
[root@nodeo1 ~]#
- 6 window客户端浏览器访问https://www.xiaofeng.com
-
查看是否获认证
-
查看证书信息及证书路径
-
3、搭建DNS服务器
简介
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。-
类型
- 主域名服务器:
负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。 - 辅助域名服务器:
当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。辅助域名服务器中的区域文件中的数据是从另外的一台主域名服务器中复制过来的,是不可以修改的。 - 缓存域名服务器
从某个远程服务器取得每次域名服务器的查询回答,一旦取得一个答案就将它放在高速缓存中,以后查询相同的信息就用高速缓存中的数据回答,缓存域名服务器不是权威的域名服务器,因为它提供的信息都是间接信息。 - 转发域名服务器
负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
- 主域名服务器:
-
DNS解析过程
我们已浏览输入访问www.163.com为例- 1、查询本地hosts及本地缓存,如没有得到IP地址则进行第二步
- 2、查询本地配置的DNS服务器,如果没有得到IP地址则访问根域名服务器(默认可配置)
- 3、根域名服务器告诉本地DNS服务器关于.com顶级域名的服务器地址
- 4、本地DNS服务器得到.com顶级域名的服务器地址,并访问
- 5、.com域名服务器告诉本地DNS你去问163.com的主区域服务器,我告诉你163.com区域服务器地址
- 6、本地DNS服务器再去访问163.com主区域服务器
- 7、本地DNS服务器经查询163.com主区域服务器,得知www.163.com的IP地址是1.1.1.1
- 8、本地DNS服务器缓存该对应关系,并告知本地主机。
-
搭建主从DNS域名服务器
- 环境 centos 7
10.192.2.222 主
10.192.2.221 从 - 主从服务器均安装、启动named服务
[root@node01 ~]# yum -y install bind [root@node01 ~]# systemctl start named
- 主服务器配置解析一个正向区域,以peaoguo.com域为例
1、修改监听IP为本机 [root@node01 ~]# vim /etc/named.conf listen-on port 53 { 127.0.0.1; 10.192.2.222; }; 2、定义区域 在主机配置文件中或主机配置文件辅助配置文件中实现 [root@node01 ~]# vim /etc/named.rfc1912.zones zone "peaoguo.com" IN { type master; file "peaoguo.com.zone"; allow-update { 10.192.2.221; }; allow-transfer { 10.192.2.221; }; }; 3、建立区域数据文件 在 /var/named目录下建立区域数据文件,文件为:/var/named/peaoguo.com.zone [root@node01 named]# vim peaoguo.com.zone $TTL 3600 $ORIGIN peaoguo.com. @ IN SOA ns1.peaoguo.com. dnsadmin.peaoguo.com. ( 2019012907 1H 10M 3D 1D ) IN NS ns1 IN NS ns2 ops IN NS ns3.ops IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 10.192.2.222 ns2 IN A 10.192.2.221 mx1 IN A 10.192.2.166 mx2 IN A 10.192.2.161 www IN A 10.192.2.222 web IN CNAME www bbs IN A 10.192.2.162 bbs IN A 10.192.2.163 pop3 IN A 10.192.2.164 ns3.ops IN A 10.192.1.163 4、权限及属组修改 [root@node01 named]# chgrp named /var/named/peaoguo.com.zone [root@node01 named]# chmod o= /var/named/peaoguo.com.zone 5、检查语法错误 [root@node01 named]# named-checkzone peaoguo.com peaoguo.com.zone zone peaoguo.com/IN: loaded serial 2019012907 OK [root@node01 named]# named-checkconf 6、重新reload服务 [root@node01 named]# rndc reload server reload successful 7、解析测试 [root@node01 named]# dig -t A www.peaoguo.com @10.192.2.222 ; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -t A www.peaoguo.com @10.192.2.222 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42320 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.peaoguo.com. IN A ;; ANSWER SECTION: www.peaoguo.com. 3600 IN A 10.192.2.222 ;; AUTHORITY SECTION: peaoguo.com. 3600 IN NS ns1.peaoguo.com. peaoguo.com. 3600 IN NS ns2.peaoguo.com. ;; ADDITIONAL SECTION: ns1.peaoguo.com. 3600 IN A 10.192.2.222 ns2.peaoguo.com. 3600 IN A 10.192.2.221 ;; Query time: 0 msec ;; SERVER: 10.192.2.222#53(10.192.2.222) ;; WHEN: 四 2月 14 17:14:24 CST 2019 ;; MSG SIZE rcvd: 128 [root@node01 named]#
- 从服务配置
1、定义一个从区域 [root@node02 ~]# vim /etc/named.rfc1912.zones zone "peaoguo.com" IN { type slave; file "slaves/peaoguo.com.zone"; masters { 10.192.2.222; }; allow-transfer { none; }; allow-update { none; }; }; 2、语法检查并reload [root@node02 ~]# named-checkconf [root@node02 ~]# systemctl reload named 3、主服务器添加mail.peaoguo.com的A记录,并重启named服务 mail IN A 10.192.2.223 [root@node01 ~]# systemctl restart named 4、从服务器查看是否有记录同步 [root@node02 slaves]# ls -l /var/named/slaves/peaoguo.com.zone -rw-r--r-- 1 named named 783 2月 14 17:26 /var/named/slaves/peaoguo.com.zone [root@node02 slaves]# 5、从服务器测试A记录解析 [root@node02 slaves]# dig -t A mail.peaoguo.com @10.192.2.221 ; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -t A mail.peaoguo.com @10.192.2.221 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65158 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;mail.peaoguo.com. IN A ;; ANSWER SECTION: mail.peaoguo.com. 3600 IN A 10.192.2.223 ;; AUTHORITY SECTION: peaoguo.com. 3600 IN NS ns2.peaoguo.com. peaoguo.com. 3600 IN NS ns1.peaoguo.com. ;; ADDITIONAL SECTION: ns1.peaoguo.com. 3600 IN A 10.192.2.222 ns2.peaoguo.com. 3600 IN A 10.192.2.221 ;; Query time: 1 msec ;; SERVER: 10.192.2.221#53(10.192.2.221) ;; WHEN: 四 2月 14 17:32:48 CST 2019 ;; MSG SIZE rcvd: 129 [root@node02 slaves]#
主从配置注意:
1、确保区域数据文件中为每个从服务器配置NS记录,并其在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,并且A后面的地址为真正的从服务器的IP地址。
2、时间要同步 - 环境 centos 7
4、熟悉DNSPOD的解析类型
DNSPod是国内提供智能DNS产品的网站,致力于为各类网站提供高质量的电信、网通、教育网双线或者三线智能DNS免费解析。目前DNSPod已经是国内最大的免费DNS解析产品提供商
- A记录
如果需要将域名指向一个ip地址,就需要添加A记录 - CNAME记录
如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录
最常用到CNAME的情况包括:做CDN,做企业邮局 - MX记录
如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 - TXT记录
如果希望对域名进行标识和说明,可以使用TXT记录,绝大多数的TXT记录是用来做SPF记录(反垃圾邮件) - 隐/显性URL记录
将一个域名指向另外一个已经存在的站点,就需要添加URL记录 - AAAA记录
当您希望访问者通过IPv6地址访问您的域名时,可以使用AAAA记录 - NS记录
如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 - SRV记录
SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理