1、画出TSL链路的通信图
SSL: Secure Socket Layer
TLS: Transport Layer Security
1995:SSL 2.0 Netscape
1996: SSL 3.0
1999: TLS 1.0
2006: TLS 1.1 IETF(Internet工程任务组) RFC 4346
2008:TLS 1.2 当前使用
2015: TLS 1.3
功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套
件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信
注:图片来源于马哥教育
2、如何让浏览器识别自签的证书
什么是自签名证书
公认的证书往往都需要收费,如果客户端与服务端都是由我们自己来操控,那便可以使用自签名证书
ca签名证书
ca签名证书,也就是我们自己当是认证的机构去认证一个证书,那么客户端新人该ca证书也代表着信任该ca证书签名的所有的自签名证书。
这里用openssl 实现自签名证书
OpenSSL是一套开源的密码学工具包
在SSL协议中,我们使用了很多密码学手段来保护数据,其中包括对称密码、公钥密码、数字签名、证书、完整性校验、伪随机数生成等。由于这些算法和操作都非常复杂,于是开源社区就开发了一套库,这个库里面提供了很多现成的标准方法,其他开发者只要用正确调用这些方法,就可以实现SSL协议中的各种加密/解密操作了。
linux环境下使用openssl生成ca证书与自签名证书
生成ca证书
1).生成ca证书的密钥key
openssl genrsa -des3 -out ca.key 1024
2).生成ca的自签名证书,是的,此处的ca证书也是一个自签名证书
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
输入ca.key的使用密码后根据情况输入相应信息,在Commom Name选项中需要填写你要使用的域名
如果不想在调用密钥文件的时候输入密码,可以使用以下操作去除
openssl rsa -in ca.key -out ca.key
使用ca证书签名自签名证书
1).生成自签名证书密钥
openssl genrsa -des3 -out server.key 1024
2).生成自签名证书请求文件
openssl req -new -key server.key -out server.csr
输入相应信息后得到server.csr请求文件
3).使用ca证书对自签名证书请求文件进行签名
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
3、搭建DNS服务器
centos6 (这里是6.7):
1、查看是否已安装Bind软件包,默认只有下面两个
[root@centos named]# rpm -qa | grep bind
bind-libs-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-utils-9.8.2-0.47.rc1.el6_8.4.x86_64
2、安装下面的这两个软件包:
bind-chroot-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-9.8.2-0.47.rc1.el6_8.4.x86_64
[root@centos named]# yum -y install bind-chroot-9.8.2-0.47.rc1.el6_8.4.x86_64 bind-9.8.2-0.47.rc1.el6_8.4.x86_64
安装完成查看是否成功安装
[root@localhost ~]# rpm -qa | grep bind
bind-devel-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-utils-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-chroot-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-libs-9.8.2-0.47.rc1.el6_8.4.x86_64
bind-9.8.2-0.47.rc1.el6_8.4.x86_64
//看到这个说明安装成功
本例中配置ip地址为:192.168.1.10 子网掩码255.255.255.0
主机名为centos.linux.com 并关闭防火墙和selinux
3、配置ip地址,子网掩码
[root@centos named]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
device=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTBROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS1=8.8.8.8
//DNS根据实际情况配置。可以配置谷歌的8.8.8.8,也可以是您当地宿主机的dns
4、更改主机名
[root@centos named]# vim /etc/sysconfig/network
5、更改selinux为disabled
[root@centos named]# vim /etc/selinux/config
6、关闭防火墙守护进程
[root@centos named]# chkconfig iptables off
[root@centos named]# chkconfig --list iptables
7、重启系统,让配置生效
8、设置主DNS服务器:
[root@centos named]# cd /etc/
[root@centos named]# cp named.conf named.bak
先做一个备份,防止出错不能够恢复
9、编辑主配置文件,修改两个地方为any
[root@centos named]# vim /etc/named.conf
options {
listen-on port 53 { any;}; //{any:} 原内容改成 any
...
allow-query { any;}; //{any:} 原内容改成 any
...
10、编辑主配置文件
正反向区域的配置,可以直接写在/etc/named.conf中(不推荐),在/etc/named.conf最下方有两句include语句,其中include "/etc/named.rfc1912.zones";就是用来配置正反向区域配置的文件,当然也可以自定义(自定义需要在/etc/named.conf中include)
这里我们使用默认的配置文件/etc/named.rfc1912.zones,执行
vim /etc/named.rfc1912.zones
编辑这个文件,加入(以域名linux.com为例):
zone "linux.com" IN {
type master;
file "linux.com.zone";
};
反向区域如下,
zone "1.168.192.in-addr.arpa." IN {
type master;
file "1.168.192.zone";
};
11、修改正向配置文件
正反向解析区域文件都在/etc/named.conf的 directory 参数配置,默认是"/var/named"。
cd /var/named/ //进入这个目录
cp named.localhost linux.com.zone //将name.localhost 作为正向解析文件的模板,复制成linux.com.zone。在linux.com.zone里面更改 注意:最后的 点 这里面用tab键补齐,别用空格
12、修改反向配置文件(提示:可以拷贝正向解析文件去然后进行更改)
13、主配置,正反向配置完以后,检查bind文件配置过程中容易出错的地方,以下命令用于检查bind配置文件以及zone文件语法
这里是检查正向:
[root@centos named]# named-checkconf /etc/named.conf
[root@centos named]# named-checkzone linux.com /var/named/linux.com.zone
这里是检查反向:
[root@centos named]# named-checkconf /etc/named.conf
[root@centos named]# named-checkzone linux.com /var/named/1.168.192.zone
14、然后/etc/resolve.conf 添加自己的ip地址为域名服务器ip 192.168.1.10
vim /etc/resolve.conf
nameserver 192.168.1.10
15、重启服务
CentOS6.x 使用 service named restart重启named服务,使用chkconfig named on让服务开机启动。
CentOS7.x 使用 systemctl restart named重启named服务,使用systemctl enable named让服务开机启动。
这里当然是
[root@localhost named]# service named restart
[root@localhost named]# systemctl enable named
16、配置防火墙
CentOS7.x 是:
[root@localhost~]# firewall-cmd --zone=public--add-port=53/tcp --permanent
[root@localhost~]# firewall-cmd --zone=public--add-port=53/udp --permanent
重启防火墙以让更改立刻生效:
[root@localhost~]# firewall-cmd –reload
可使用以下命令检查配置是否成功:
[root@localhost~]# firewall-cmd --list-all
CentOS6.X是:
/sbin/iptables -I INPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -I INPUT -p udp --dport 53 -j ACCEPT
保存规则:
/etc/rc.d/init.d/iptables save
重启防火墙以让更改立刻生效:
service iptables restart
17、检查之前先看下 配置文件有没有读取权限 ll /var/named
(如果没有读取权限, chmod +r /var/named/* 即可)
如果出现报错,输入
[root@centos etc]# tail /var/log/messages
查看错误文件,并更改
正向解析成功
[root@centos named]# nslookup www.linux.com
Server: 192.168.1.10
Address: 192.168.1.10#53
www.linux.com canonical name = centos.linux.com.
Name: centos.linux.com
Address: 192.168.1.10
反向解析成功
[root@centos named]# nslookup 192.168.1.10
Server: 192.168.1.10
Address: 192.168.1.10#53
10.1.168.192.in-addr.arpa name = centos.linux.com.
10.1.168.192.in-addr.arpa name = www.linux.com.
如果出现解析不成功的情况:
[root@centos named]# service network restart //先重启网络
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 192.168.1.10 is already in use for device eth0...
[ OK ]
[root@centos named]# service named restart //再重启DNS服务 最后再去尝试解析
Stopping named: . [ OK ]
Starting named: [ OK ]
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记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理