- 1、画出TSL链路的通信图
- 2、如何让浏览器识别自签的证书
- 3、搭建DNS服务器
- 4、熟悉DNSPOD的解析类型
画出TSL链路的通信图
TSL:transport layer security 传输层安全性 是很多小协议的组合
安全协议SSL:Secure Socket Layer安全套接层
TSL:Transport Layer Secyrity
1995:SSL 2.0 Netscape
1996:SSL 3.0
1999:TSL 1.0
2006:TSL 1.1 IETF(Internet工程任务组)RFC 4346
2008:TSL 1.2 当前使用
2015:TLS 1.3
功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段);客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证,)并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的秘钥进行安全通信。
tcp协议的分层,tcp,udp
应用层的数据到达ssl/tls封装头部,就算被截获,也看不到数据,之能通过抓包是可以看到ip地址,
SSLd 握手过程:
第一步: 爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
第二步: 鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
第三步: 爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
第四步: 鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。
第五步: 爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。
也可以这么理解:
上层应用协议有httpd协议,telnet协议
上层用httpd协议,下层用tls协议加密,就叫https协议
https如何实现中间通讯安全:
第一步, 客户端向服务器发消息,hello,
第二步 服务器回复hello,会把自己的证书发到客户端(证书包含CA签名过的公钥,CA信息描述,有效期,淘宝的公钥)
第三步, 客户端由于信任ca有ca公钥,就可以把数据解开,拿到淘宝公钥,一般客户端会在自己的浏览器生成一个对称秘钥,用淘宝的公钥加密,发给淘宝;
第四步, 淘宝解开得到对称秘钥
如何让浏览器识别自签的证书
在连接开启 HTTPS 网站的时候,服务器会发送证书链,但光有证书链,客户端是不能完成证书校验的,必须有一张根证书才能完成签名认证,也就是客户端必须信任根证书才能构建信任基础,那么根证书在哪儿呢?
在 windows 平台中,微软有专门的根证书库。
在 Linux 平台中,软件和服务一般使用 NSS 根证书库。
在苹果平台中,也有专门的根证书库。
每个 CA 机构为了发展业务,需要申请将自己的根证书嵌入到各个平台中,如果申请被拒绝,CA 机构将无法开展业务。
在开源软件领域,NSS 根证书库是最流行的,所以很多软件和服务会使用 NSS 根证书库,原因何在?关键就在于透明性,NSS 在审核方面做的很严格,坚决杜绝非法 CA 根证书的存在。
对于普通用户和开发者来说,一般情况下接触不到可信任根证书库,但是有些情况下,也有可能希望更新本地的可信任根证书库,比如:
(1 在开发环境中应该避免使用线上证书,因为证书和私钥一起保存,由于开发环境比较混乱,容易泄露私钥,从而带来安全风险。
在这种情况下,可以生成一张自签名证书,由于浏览器不信任该证书,访问网站的时候总会提示安全风险,为了避免频繁的提示,可以手动将证书添加到浏览器的可信任根证书库中。
(2 企业内部构建一个私有 CA,然后给自己的业务签发证书,这种情况很常见,比如一些内部管理系统完全可以使用自签发的证书,减少证书申请成本,为避免员工访问的时候提示安全风险,可以将证书添加到浏览器的可信任根证书库中。
让浏览器识别自签的证书:
获取一张自签名证书
安装证书
就完成了,现在浏览器就可以识别证书
另一种方法,基于linux 平台
使用 certutil 命令行工具可以管理 NSS 证书安装:
yum install nss-tools列出安全数据库中的证书:
certutil -L -d certdir
说明:
列出指定的目录certdir的所有证书,-d 后面接上证书库的目录 -L表示列出所有证书。添加证书到数据库中: certutil -A -n 111@111.com -t “p,p,p” -i mycert.crt -d certdir
说明:
-A表示添加证书到数据库中
-n 表示证书的呢称
-t 表示设置信任属性
-i 表示输入文件,即crt文件
-d 后面接上证书库的目录
搭建DNS服务器
域名不区分大小.
由最顶层到下层,可以分成:根域、顶级域、二级域、子域.
Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织.
“.”全球有13个根(root)服务器
DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理.共有3 种类型的顶级域.
组织域:采用3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动.比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织.
地址域:采用两个字符的国家或地区代号.如cn 为中国,kr 为韩国,us 为美国.
反向域:这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询).
对于顶级域的下级域,Internet 域名注册授权机构授权给Internet 的各种组织.当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配域中主机名与IP 地址的映射信息.
FQDN全限定域名: 通常由一个完全合格域名(FQDN)标识.FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN)为google.com.
FQDN组成是: 主机名或别名加上域名组合而成,需要把一个fqdn,转换成ip地址才能进行找到机器进行访问,把域名转换成IP地址就叫名字解析,比如之前的/etc/hosts,分散式的名字解析方案,这个文件需要在每个电脑上维护,分散在每个主机上的,分布式的解决方案,
缺点: 就是如果一个主机的主机名或ip发生变化,那就要更新所有主机的文件,主机越多,维护量太大,所以有集中式解决方案,
专门找一个主机,搭建数据库,IP地址和主机名。
但是这样的主机,放在互联网,数据太庞大,性能差,放在中国美国等都i是问题,所以完全集中只适合中小型环境,互联网超大环境就需要另外的,既分散又集中的解决方案,就是 DNS服务 。
例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示.
注意: 通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z和减号(-).点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用.
DNS:Domain Name Service 引用层协议
C/S,53/udp,53/tcp
BIND:Bekerley Internet Name Domain
ISC(www.isc.org)
本地名称解析配置文件:hosts
/etc/hosts
%WINDIR%/system32/drivers/etc/hosts
10.0.0.1 www.xxx.com
x.x.x.x www.xxxx.com
DNS服务是C/S结构, **
著名的dns服务软件: BIND,isc。org这个组织做了两个非常著名软件,dhcp和dns
hosts文件在windos也有
windows的变量%windir%,有些人可能不装在C盘
DNS怎么解决分布式的解决方案的
如上图:dns在每个域都会有一个dns服务器,每个dns服务器都会有一个数据库,存到文本文件里都会有IP地址和主机名字的对应,跟域的服务器是存的每个下面域的dns服务器地址。
第一次访问需要从跟域层层查找,如果第一次访问www.sh.xxx.com。下面访问www.xxx.com,由于子域不知道父域是谁,所以还需要从跟域开始重新查找。
搭建一个DNS服务器
第一步 安装bind,启动服务
root@centos7 ~]#yum install bind -y
root@centos7 ~]#systemctl start bind
第二步 修改配置文件,建议把域的信息放在这个文件夹/etc/named.rfc1912.zone
root@centos7 ~]#vim /eytc/named.rfc1912.zones
添加一个域 #区域就是你要创建域的对应信息
zone "exchange.com" IN { #zone ”你的域名“IN(照抄,等于internet记录
type master; #type 主从(master
file "exchange.com.zone"; 数据解析文件的文件名 #file"数据库文件名"
};
第三步 修改服务配置文件
root@centos7 ~]#/vim etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; 注释掉
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 { localhost; }; 注释掉
第四步 创建解析文件
[root@centos7 ~]vi /var/named/exchange.com.zone
$TTL 1D
@ IN SOA dns1.exchange.com. admin.exchange.com. (1 1D 2H 3D 1H) #sos起始授权记录必须有,记录谁是主服务器,邮箱地址 (版本号1,同步时间一天,同步失败2小时重试,失败三天从服务器失效,缓存有效期1小时)
NS dns1 有两个服务器 1,2
dns1 A 192.168.30.155 主服务器地址
websrv A 192.168.30.243 web服务器1
www CNAME websrv 别名
#保存之后
还需要改变文件的属性,所属组和权限
[root@centos7 ~]chgrp named /var/named/exchange.com.zone
[root@centos7 ~]chmod 640 /var/named/exchange.com.zone
最重要的记录。soa记录,记录的内容是此服务器。这个域里面谁是主服务器,
还有谁是这个域的管理员,管理员的邮箱联系方式。
第五步 检查配置文件是否正确,启动服务
root@centos7 ~]named-checkconf
root@centos7 ~] named-checkzone "exchange.com.zone" /var/named/exchange.com.zone
无问题,启动服务
root@centos7 ~]service bind start
第六步 测试是否成功
root@centos7 ~]dig -t A www.exchange.com @Server 正向解析
熟悉DNSPOD的解析类型
资源记录:
区域解析库: 由众多RR组成:
资源记录:RR resource record 资源记录
记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA: Start Of Authority ,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
A: inertnet Address 记录是把名字解析成ipv4地址。正向解析 FQDN–>IP
如:
www.dns.la转到IP 116.255.202.1
web.dns.la 转到IP 116.255.202.11
mail.dns.la 转到IP 116.255.202.111
AAAA: FQDN -->IPV6 是把名字解析成ipv6地址
该记录是将域名解析到一个指定的IPV6的IP上。
PTR: pointer 反向解析 IP–>FQDN
NS: Name Server 记录是表明当前域的dns服务器(整个exchangeideas.cn的域谁是dns服务器
用来指定该域名由哪个DNS服务器来进行解析,可以把一个域名的不同二级域名分别指向到不同的DNS系统来解析。
cname: Canonical Name 别名记录 www一般都是别名(淘宝的真名就是cname后面的
可以将注册的不同域名都转到一个域名记录上,由这个域名记录统一解析管理,与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址。
mx: Mail exchanger 邮件,邮件交换器
用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。
隐/显性URL记录: 将一个域名指向另外一个已经存在的站点,就需要添加URL记录 隐性转发:用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://a.com 回车,打开网站内容是目标地址http://www.dnspod.cn 的网站内容,但地址栏显示当前地址http://a.com 。如果目标地址不允许被嵌套时,则不能使用隐性转发(如QQ空间,不能使用隐性转发)。 显性转发:用的是301重定向技术;效果为浏览器地址栏输入http://a.com 回车,打开网站内容是目标地址http://www.dnspod.cn 的网站内容,且地址栏显示目标地址http://www.dnspod.cn 。
如果您没有一台独立的服务器(也就是没有一个独立的IP地址)或者您还有一个域名B,您想访问A域名时访问到B域名的内容,这时您就可以通过URL转发来实现。
url转发可以转发到某一个目录下,甚至某一个文件上。而cname是不可以,这就是url转发和cname的主要区别所在。