Zabbix可以使用PEM格式的RSA证书,由公共或内部认证机构(CA)签名。根据预先配置的CA证书进行证书验证。不支持自签名证书。可以选择使用证书撤销列表(CRL)。每个Zabbix组件只能配置一个证书。
有关如何设置和操作内部CA的更多信息,如何生成证书请求并签名,如何撤销证书,您可以找到许多在线操作,例如OpenSSL PKI Tutorial v1.1。
仔细考虑和测试证书扩展 - 请参阅 使用X.509 v3证书扩展的限制.
| 参数 必 | 描述 | |
|---|---|---|
| TLSCAFile | * | 包含用于对等证书验证的顶级CA证书的文件的完整路径名。 在具有多个成员的证书链的情况下,它们必须被排序:较低级别的CA证书,然后是较高级别的CA证书。 来自多个CA的证书可以包含在单个文件中。 |
| TLSCRLFile | 包含证书吊销列表的文件的完整路径名。见证书吊销清单(CRL)中的注释。Certificate Revocation Lists (CRL). | |
| TLSCertFile | * | 包含证书(证书链)的文件的完整路径名。 设置此文件的访问权限 - 它必须只能由Zabbix用户读取。 在具有多个成员的证书链的情况下,必须首先对其进行排序:服务器,proxy或agent证书,其次是较低级别的CA证书,然后是较高级别CA的证书。 |
| TLSKeyFile | * | 包含私钥的文件的完整路径名。设置此文件的访问权限 - 它必须只能由Zabbix用户读取。 |
| TLSServerCertIssuer | 允许的服务器证书发行者(issuer)。 | |
| TLSServerCertSubject | 允许的服务器证书主体(subject)。 | |
1. 为了验证对等证书,Zabbix server必须具有使用其顶级自签名根CA证书的文件访问权限。例如,如果我们期望来自两个独立根CA的证书,我们可以将其证书放入文件中 /home/zabbix/zabbix_ca_file:
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA ... Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) ... X509v3 extensions: X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE ... -----BEGIN CERTIFICATE----- MIID2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB .... 9wEzdN8uTrqoyU78gi12npLj08LegRKjb5hFTVmO -----END CERTIFICATE----- Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA ... Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root2 CA Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) .... X509v3 extensions: X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE .... -----BEGIN CERTIFICATE----- MIID3DCCAsSgAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQB ... vdGNYoSfvu41GQAR5Vj5FnRJRzv5XQOZ3B6894GY1zY= -----END CERTIFICATE-----2.将Zabbix服务器证书链放入文件中,例如/home/zabbix/zabbix_server.crt:
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA ... Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix server Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) ... X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Basic Constraints: CA:FALSE ... -----BEGIN CERTIFICATE----- MIIECDCCAvCgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixk ... h02u1GHiy46GI+xfR3LsPwFKlkTaaLaL/6aaoQ== -----END CERTIFICATE----- Certificate: Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: sha1WithRSAEncryption Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Root1 CA ... Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) ... X509v3 extensions: X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE, pathlen:0 ... -----BEGIN CERTIFICATE----- MIID4TCCAsmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYKCZImiZPyLGQB ... dyCeWnvL7u5sd6ffo8iRny0QzbHKmQt/wUtcVIvWXdMIFJM0Hw== -----END CERTIFICATE-----先放入Zabbix server证书,随后是中间CA的证书。
3.将Zabbix server私钥放入文件中,例如/home/zabbix/zabbix_server.key:
-----BEGIN PRIVATE KEY----- MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl ... IJLkhbybBYEf47MLhffWa7XvZTY= -----END PRIVATE KEY-----4.在Zabbix server配置文件中编辑TLS参数,如下所示:
TLSCAFile=/home/zabbix/zabbix_ca_file TLSCertFile=/home/zabbix/zabbix_server.crt TLSKeyFile=/home/zabbix/zabbix_server.key1.使用顶级CA证书,proxy证书(链)和私钥准备文件,如在Zabbix server上配置证书中所述。编辑参数TLSCAFile,TLSCertFile, TLSKeyFile在proxy配置相应。
2.对于proxy 代理编辑TLSConnect参数:
对于被动proxy编辑TLSAccept参数:
3.现在你有一个基于证书的最小proxy配置。您可能希望通过设置TLSServerCertIssuer和TLSServerCertSubject参数来提高proxy安全性(请参阅限制允许的证书发行者和主体)。
4.在最终的proxy配置文件中,TLS参数可能如下所示:
TLSConnect=cert TLSAccept=cert TLSCAFile=/home/zabbix/zabbix_ca_file TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSServerCertSubject=CN=Zabbix server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSCertFile=/home/zabbix/zabbix_proxy.crt TLSKeyFile=/home/zabbix/zabbix_proxy.key5. 在Zabbix前端配置此proxy的加密:
在下面的示例中,发行者(Issuer)和主体(fields)字段填写 - 请参阅[zh:manual:encryption/using_certificates#restricting_allowed_certificate_issuer_and_subject|限制允许的证书发行者和主体]]为什么以及如何使用这些字段。
对于主动proxy

对于被动proxy

1.使用顶级CA证书,代理证书(链)和私钥准备文件,如在Zabbix server配置证书中所述。编辑参数TLSCAFile,TLSCertFile,TLSKeyFile在agent配置相应。
2.对于主动检查编辑TLSConnect参数:
对于被动检查编辑TLSAccept参数:
3.现在,您有一个基于证书的最小agent配置。您可能希望通过设置TLSServerCertIssuer和TLSServerCertSubject参数提高agent安全性。(请参阅限制允许的证书发行者和主体)。
4.在最终agent配置文件中,TLS参数可能如下所示:
TLSConnect=cert TLSAccept=cert TLSCAFile=/home/zabbix/zabbix_ca_file TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSServerCertSubject=CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSCertFile=/home/zabbix/zabbix_agentd.crt TLSKeyFile=/home/zabbix/zabbix_agentd.key(例如,假设主机是通过proxy监视的,因此是proxy证书主体。)
5.在Zabbix前端为此agent配置加密:
在下面的示例中,发行者和主体字段填写 - 请参阅限制允许的证书发行者和主体为什么以及如何使用这些字段。

当两个Zabbix组件(例如服务端和agent)建立TLS连接时,他们会检查对方的证书。如果对等证书由受信任的CA(具有预先配置的顶级证书TLSCAFile)签名有效,尚未过期且通过其他检查项,则可以进行通信。在最简单的情况下,不会检查证书发行者和主体。
这存在一个风险 - 任何拥有有效证书的人都可以冒充任何人(例如,主机证书可以用来模拟服务器)。在内部CA签发证书的小型环境中,这种风险可能是可以接受的,冒充的风险较低。
如果您的顶级CA用于签发其他证书而不应被Zabbix接受,或者你想降低冒充风险,您可以通过指定其发行者(Issuer)和主体(Subject)字符串来限制允许的证书。
例如,您可以在Zabbix proxy配置文件中写:
TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSServerCertSubject=CN=Zabbix server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com通过这些设置,主动proxy将不会与证书中具有不同发行者或主体字符串的Zabbix server通信,被动proxy将不接受来自此类服务器的请求。
有关发行者或主体字符串匹配的说明:
- 转义字符'"' (U+0022), '+' U+002B, ',' U+002C, ';' U+003B, '<' U+003C, '>' U+003E, '\' U+005C 在字符串中的任何地方。 - 字符串开头处的转义字符空格(' ' U+0020) 或数字符号 ('#' U+0023)。 - 字符串末尾的转义字符空间(' ' U+0020) 。 - 如果遇到空字符(U+0000)([[http://tools.ietf.org/html/rfc4514|RFC 4514]]允许),则匹配失败。 - 要求[[http://tools.ietf.org/html/rfc4517|RFC 4517轻量级目录访问协议(LDAP):句法和匹配规则]]和 [[http://tools.ietf.org/html/rfc4518|RFC 4518轻量级目录访问协议(LDAP):国际化字符串准备]],由于所需的工作量不支持。发行者和主体的内容格式及字段顺序很重要!Zabbix遵循 RFC 4514建议,并使用“反向”字段顺序。
反向顺序可以举例说明:
TLSServerCertIssuer=CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSServerCertSubject=CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com请注意,它以低位(CN)开始,进入中级(OU,O)并以顶级(DC)字段结束。
默认情况下,OpenSSL将以“正常”的顺序显示证书发行者和主体字段,具体取决于使用的其他选项:
$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject issuer= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Development group/CN=Signing CA subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Development group/CN=Zabbix proxy $ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt Certificate: ... Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Signing CA ... Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix proxy这里发行者和主体字符串从顶级(DC)开始,以低级(CN)字段结尾,空格和字段分隔符取决于所使用的选项。这些值都不会匹配Zabbix发行者(Issuer)和主体(Subject)字段!
要获得适当的发行者和主体字符串可用于Zabbix使用特殊选项调用\\OpenSSL
-nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname:
$ openssl x509 -noout -issuer -subject \ -nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname \ -in /home/zabbix/zabbix_proxy.crt issuer= CN=Signing CA,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com subject= CN=Zabbix proxy,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com现在字段是反序,字段是逗号分隔的,可以在Zabbix配置文件和前端使用。
如果证书受到威胁,CA可以通过在CRL中包含来撤销证书。可以在server器,proxy和agent的配置文件中配置CRL TLSCRLFile。例如:
where zabbix_crl_file may contain CRLs from several CAs and look like:
zabbix_crl_file可能包含几个CA的CRL,如下所示
-----BEGIN X509 CRL----- MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv ... treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg= -----END X509 CRL----- -----BEGIN X509 CRL----- MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t ... CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs= -----END X509 CRL-----CRL文件仅在Zabbix启动时加载。CRL更新需要重新启动。
如果使用OpenSSL编译Zabbix组件,要使用CRL,则证书链中的每个顶级和中级CA都必须具有相应的CRL(可以为空)TLSCRLFile。