监控案例四---zabbix数据传输基于CERT证书加密
参考链接:https://blog.csdn.net/qq_15092079/article/details/82149807
- 首先zabbix server、zabbix proxy、zabbix agent 已经配置完成并可以正常展示数据。
点击Administration----->选择Proxies------>Create proxy ,proxy name与proxy配置文件中的host name相同, proxy mode 模式选择 Active,Proxy address 填写proxy的EIP。因目前还没有配置证书所以可以先不用考虑认证选项的配置。
注意:当前每个加密的连接均使用完整的TLS握手打开,未实现会话的缓存和票证。
添加加密会增加检查和操作的时间,取决于网络延迟,所以为了保证数据不会因为超时而失败,需要在需要加密传输的机器配置文件中增加超时时间。
连接加密管理:
- 不加密(默认)
- 基于RSA证书的加密
- 基于PSK加密
今天我们来讲一下如何通过RSA进行加密:
- 首先查看一下openssl版本,目前zabbix4.0.20支持版本1.0.1、1.0.2、1.1.0
# openssl version -a
执行命令后的结果,我目前使用的是openssl1.0.2k版本
2. 查看openssl的配置文件openssl.cnf的存放位置,如上图可以看出配置文件位置为/etc/pki/tls下,配置文件名称为openssl.cnf。
每个变量的后面都有英文注释,可以根据注释了解一个参数内容。
3. 创建为根证书CA所需的目录及文件
# cd /etc/pki/CA # mkdir -pv {certs,crl,newcerts,private} #有则无需创建 # touch {serial,index.txt} 指明证书开始编号 # echo 01 >> serial
4. 生成根证书的私钥(注意:私钥的文件名与存放位置要与配置文件中的设置相匹配)
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
如下效果:
参数说明:
genrsa --产生rsa秘钥命令
-out 指定秘钥文件输出的位置
2048 指的是秘钥的长度位数,默认为512位
5. 生成自签证书,即根证书CA,自签证书的存放位置也要与配置文件中设置相匹配,生成证书时需要填写相应信息。
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 3650
参数说明:
-new:表示生成一个新的证书签署请求。
-x509:专用于CA生成自签证书,如果不是自签证书则不需要此选项
-key:用到的私钥文件
-out:证书的保存路径
-days:证书的有效期限,单位是day(天),默认是openssl.cnf的default_days
这样,根证书CA就已经完成。
6. 在需要证书的服务器上生成私钥,然后通过此私钥生成证书签署请求,然后将请求通过可靠的方式发送给根证书CA的服务器,根证书CA服务器拿到证书签署请求后,即可颁发那一服务器的证书。
在需要证书的服务器上,生成私钥
# (umask 077;openssl genrsa -out proxy.key 2048)
命令执行结果如下;
生成证书签署请求
# openssl req -new -key proxy.key -out proxy.csr -days 3650
命令执行结果如下:
7. 在根证书服务器上,颁发证书,颁发证书即签名证书,生成crt文件
# 创建一个req文件夹用来接收服务器发送过来的文件(签署请求的csr文件、key文件等)
# mkdir /etc/pki/CA/req
#颁发证书
# openssl ca -in /etc/pki/CA/req/proxy.csr -out /etc/pki/CA/certs/proxy.crt -days 3650
#查看证书信息
# openssl x509 -in /etc/pki/CA/certs/proxy.crt -noout -serial -subject -issuer
8. 完成证书的颁发后,我们将证书通过可靠的方式发送给申请的服务器即可。
接下来我们使用创建的证书对zabbix-server、zabbix-proxy、zabbix-agent进行配置。因配置原理相同,我们这里就只介绍如何配置zabbix-server与zabbix-proxy实现加密通信。
- 首先进入zabbix-server配置文件作如下添加如下配置,并重启zabbix-server服务:
# 指定CA根证书位置,即我们生成cakey.pem的位置 TLSCAFile = / home / zabbix / zabbix_ca_file # 指定生成zabbix server的私钥文件 TLSCertFile = / home / zabbix / zabbix_server.crt # 指定生成zabbix server的key文件 TLSKeyFile = / home / zabbix / zabbix_server.key
2. 进入到zabbix-proxy服务器,并对zabbix-proxy配置文件做如下修改,修改完成后重启zabbix-proxy服务:
找到 TLS相关参数配置如下: ####### TLS-RELATED PARAMETERS ####### # 连接方式选择cert TLSConnect=cert # 从zabbix服务器接受哪些传入连接。用于被动代理,主动代理上被忽略 TLSAccept=cert # 根CA证书的文件所在的完整路径 TLSCAFile=/etc/pki/CA/cacert.pem # 代理服务器证书的完整路径名 TLSCertFile=/etc/pki/CA/zabbix_server.crt # 代理服务器私钥的完整路径,需要将key权限调整为755。 TLSKeyFile=/etc/pki/CA/zabbix_server.key
接下来非常关键的一步就是去zabbix dashboard中,我们第一步配置的proxy的控制面板中,将认证改为CERT,通过zabbix-server、zabbix-proxy就可以发现数据可以正常传输了。
注意:产生如下错误,就是因为我们没有在zabbix dashboard的proxies中配置认证选项导致的。
/etc/pki/CA/zabbix_server.key私钥文件权限不调整为755,会产生如下错误:
这样我们就完成了zabbix-server与zabbix-proxy的数据加密通信,若想实现zabbix-agent与zabbix-proxy的数据加密通信原理相同,我就不在这里详细解释了。大家可以私信操作。
-issuer