监控案例四---zabbix数据传输基于CERT证书加密

参考链接:https://blog.csdn.net/qq_15092079/article/details/82149807

 

  1. 首先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进行加密:

  1.   首先查看一下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实现加密通信。

  1.  首先进入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

posted @ 2020-06-29 21:40  摩天居士-谢烟客  阅读(713)  评论(0编辑  收藏  举报