1、画出TSL链路的通信图
第一阶段:ClientHello:
支持的协议版本,比如tls 1.2
客户端生成一个随机数,用于稍后生成“会话密钥”
支持的加密算法列表
支持的压缩算法
第二阶段:ServerHello
确认使用的加密通信协议版本,比如 tls 1.2
服务器端生成一个随机数,用于稍后生成“会话密钥”
确认使用的加密方法
服务器证书
第三阶段:
客户端验证服务器证书(检查发证机构、证书完整性、证书持有者,证书有效期、吊销列表),在确认无误后取出其公钥
发送以下信息给服务器端:
生成第三个随机数(pre-master-key),用公钥加密
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送
客户端握手结束通知
第四阶段:
服务端用自己私钥解密从客户端发来的信息,得到第三个随机数(pre-master-key)后,计算生成本次会话所用到的“会话密钥”
向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送
服务端握手结束通知
后续的会话就使用会话密钥进行加密。
2、如何让浏览器识别自签的证书
流程(以httpd为例):生成私钥;生成自签证书;为CA提供所需的目录及文件;用到证书的主机生成私钥;生成证书签署请求;将请求通过可靠方式发送给CA主机;在CA主机上签署证书;
建立私有CA:openssl
openssl 配置文件:/etc/pki/tls/openssl.cnf
构建私有CA:
在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;
步骤:
(1) 生成私钥;
~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
(2) 生成自签证书;
~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
-new:生成新证书签署请求;
-x509:生成自签格式证书,专用于创建私有CA时;
-key:生成请求时用到的私有文件路径;
-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days:证书的有效时长,单位是day;
(3) 为CA提供所需的目录及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,需要向CA请求签署证书:
步骤:(以httpd为例)
(1) 用到证书的主机生成私钥;
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(2) 生成证书签署请求
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(3) 将请求通过可靠方式发送给CA主机;
(4) 在CA主机上签署证书;
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看证书中的信息:
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
3、搭建DNS服务器
在DNS中,域名包括根域、顶级域、二级域和主机名。
一般我们对DNS的创建维护操作有:对二级域名下添加正向或反向解析区域,为了保证安全性和负载可以搭建主从DNS服务器,子域授权和区域转发。
BIND的安装配置:
BIND: 由伯克利大学研发 Berkeley Internet Name Domain, 由 ISC.org 维护。
dns: 协议 bind: dns协议的一种实现
named:bind程序的运行的进程名
程序包:
bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
bind-utils:bind客户端程序集,例如dig, host, nslookup等测试工具;
bind:提供的dns server程序、以及几个常用的测试程序;
bind-chroot:选装,让named运行于jail(沙箱)模式下;
bind: 主配置文件:/etc/named.conf
或包含进来其它文件;
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
解析库文件:
/var/named/目录下;
一般名字为:ZONE_NAME.zone
注意:(1) 一台DNS服务器可同时为多个区域提供解析;
(2) 必须要有根区域解析库文件: named.ca;由rpm包自动生成
(3) 还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;由rpm包自动生成
正向:named.localhost 反向:named.loopback
rndc:remote name domain contoller
953/tcp,但默认监听于127.0.0.1地址,因此仅允许本地使用;
bind程序安装完成之后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接即可启动服务;
CentOS 6: service named start
CentOS 7: systemctl start named.service
主配置文件格式:
全局配置段:
options { ... }
日志配置段:
logging { ... }
区域配置段:
zone { ... }
那些由本机负责解析的区域,或转发的区域;
注意:每个配置语句必须以分号结尾;
检查配置文件语法错误:
named-checkconf [/etc/named.conf]
配置解析一个正向区域:
以abc.com域为例:
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:区域名字即为域名;
(2) 建立区域数据文件(主要记录为A或AAAA记录)
在/var/named目录下建立区域数据文件;
文件为:/var/named/abc.com.zone
$TTL 3600
$ORIGIN abc.com.
@ IN SOA ns1.abc.com. dnsadmin.abc.com. (
2019051301
1H
10M
3D
1D )
IN NS ns1
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.67
mx1 IN A 172.16.100.68
mx2 IN A 172.16.100.69
www IN A 172.16.100.67
web IN CNAME www
bbs IN A 172.16.100.70
bbs IN A 172.16.100.71
权限及属组修改:
# chgrp named /var/named/abc.com.zone
# chmod o= /var/named/abc.com.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc reload 或 # systemctl reload named.service
4、熟悉DNSPOD的解析类型
DNSPod 建立于2006年3月份,是一款免费智能DNS产品。 DNSPod 可以为同时有电信、联通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,联通的用户访问联通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
当我们在域名注册服务商处申请注册一个先前没有被注册使用过的域名时,默认二级域名的解析服务器是该服务商提供的公用域名解析服务器。我们可以通过自己的用户名密码登入web管理界面对域名进行管理。
但是我们也可以把解析域名的默认服务器指向其他的域名解析服务商处托管比如DNSPOD。
常用记录的类型有:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
A: Address, 地址记录,FQDN --> IPv4;主机名解析至IP地址
AAAA:地址记录, FQDN --> IPv6;主机名解析至IPv6地址
CNAME:Canonical Name,别名记录;
PTR:Pointer,IP --> FQDN IP地址解析至主机名
MX:Mail eXchanger,邮件交换器;优先级:0-99,数字越小优先级越高;