Zabbix pot emprar certificats RSA en format PEM, signats per una autoritat de certificació (CA) pública o interna.
La verificació del certificat es realitza en una CA de certificat preconfigurada. Opcionalment es poden emprar les llistes de revocació de certificats (CRL).
Cada component Zabbix només pot tindre un certificat configurat.
Per obtindre més informació sobre la configuració i l'ús de l'autoritat de certificació interna, la generació de peticions de certificats i la seva signatura, la revocació de certificats, trobareu un gran nombre de manuals d'usuari en línia, per exemple, [OpenSSL PKI Tutorial v2.0] (http://pki-tutorial.readthedocs.org/en/latest/).
Reviseu i proveu amb cura les extensions de certificat.
Veieu les Limitacions a les extensions de certificat X.509 v3 per obtindre més detalls.
Paràmetre | Obligatori | Descripció |
---|---|---|
TLSCAFile | sí | Camí complet a un fitxer que conté els certificats de nivell superior de CA per a la verificació de certificats entre iguals. En cas d'una cadena de certificats amb diversos membres, s'han d'ordenar: primer els certificats de CA de nivell inferior, seguits de certificats de nivell superior. Els certificats de diverses CA es poden incloure en un sol fitxer. |
TLSCRLFile | no | Camí complet a un fitxer que conté llistes de revocació de certificats. Veieu Llistes de revocació de certificats (CRL). |
TLSCertFile | yes | Camí complet d'un fitxer que conté un certificat (cadena de certificats). En el cas d'una cadena de certificats amb diversos membres, s'han d'ordenar: primer certificat de servidor, certificat de proxy o agent, seguit de certificats d'inferior nivell i després certificats de CA de nivell superior. |
TLSKeyFile | yes | Camí complet d'un fitxer que conté una clau privada. Estableix els drets d'accés a aquest fitxer: només hauria de ser llegible per l'usuari de Zabbix. |
TLSServerCertIssuer | no | Emissor del certificat del servidor es permet. |
TLSServerCertSubject | no | Titular autoritzat del certificat del servidor. |
Després de configurar els certificats necessaris, configureu els components de Zabbix per utilitzar el xifrat basat en certificats.
Tot seguit es mostren les passes detallades per a la configuració:
1. Per tal de verificar els certificats dels parells, el servidor Zabbix ha de tindre accés al fitxer amb els seus certificats de CA arrel autosignats de primer nivell. Per exemple, si esperem certificats de dues CA arrel independents, podem posar els seus certificats al fitxer /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. Poseu la cadena de certificats del servidor Zabbix a un arxiu, com ara /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-----
Aquí el primer és el certificat del servidor Zabbix, seguit del certificat de la CA intermitja.
Es desaconsella l'ús de qualsevol atribut, excepte els esmentats anteriorment, tant per als certificats de client com de servidor, perquè pot afectar el procés de verificació del certificat. Per exemple, l'OpenSSL pot no establir una connexió xifrada si s'estableix X509v3 Extended Key Usage o Netscape Cert Type. Veieu també: Limitacions en l'ús de les extensions de certificat X.509 v3.
3. Poseu la clau privada del servidor Zabbix a un arxiu, com ara /home/zabbix/zabbix_server.key
:
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
...
IJLkhbybBYEf47MLhffWa7XvZTY=
-----END PRIVATE KEY-----
4. Editeu els paràmetres TLS a l'arxiu de configuració del servidor Zabbix, amb aquest valors:
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSCertFile=/home/zabbix/zabbix_server.crt
TLSKeyFile=/home/zabbix/zabbix_server.key
1. Prepareu fitxers amb certificats de CA de primer nivell, certificat de proxy (cadena) i clau privada tal com es descriu a Configuració del certificat al servidor Zabbix. Modifiqueu els paràmetres TLSCAFile
, TLSCertFile
, TLSKeyFile
a la configuració del proxy en conseqüència.
2. Per a un proxy actiu, modifiqueu el paràmetre TLSConnect
:
Per a un proxy passiu, modifiqueu el paràmetre TLSAccept
:
3. Ara teniu una configuració mínima de proxy basada en certificats. Opcionalment, podeu millorar la seguretat del proxy configurant els paràmetres TLSServerCertIssuer
i TLSServerCertSubject
(veieu restriccions de l'emissor i del subjecte permesos).
4. Al fitxer de configuració del proxy final, la configuració de TLS podria semblar així:
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSServerCertIssuer=CN=Signing CA,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Servidor Zabbix,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_proxy.crt
TLSKeyFile=/home/zabbix/zabbix_proxy.key
5. Configureu el xifrat per a aquest proxy a la interfície Zabbix:
En els exemples següents, s'emplenen els camps Emissor i Assumpte; veieu a restricció d'emissor i subjecte permesos per què i com emprar aquests camps.
Per a un proxy actiu
Per a un proxy passiu
1. Prepareu fitxers amb certificats de CA de nivell superior, certificat d'agent (cadena) i clau privada tal com es descriu a la configuració del certificat al servidor Zabbix. Modifiqueu els paràmetres TLSCAFile
, TLSCertFile
, TLSKeyFile
a la configuració de l'agent en conseqüència.
2. Editeu els paràmetres TLS addicionals a l'arxiu de configuració de l'agent de Zabbix:
TLSConnect=cert
TLSAccept=cert
Per millorar la seguretat de l'agent, podeu establir els paràmetres TLSServerCertIssuer' i
TLSServerCertSubject`. Per obtindre més informació, consulteu Restricció de l'emissor i el subjecte del certificat permesos.
Els paràmetres TLS del fitxer de configuració de l'agent final poden tenir el següent aspecte. Tingueu en compte que l'exemple suposa que l'equip és monitorat per un proxy, per tant, s'especifica com a subjecte del certificat:
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSServerCertIssuer=CN=Signing CA,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Proxy Zabbix,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_agentd.crt
TLSKeyFile=/home/zabbix/zabbix_agentd.key
3. Configureu el xifrat a la interfície Zabbix per a l'equip monitorat per aquest agent.
A l'exemple següent, s'emplenen els camps Emissor i Assumpte. Per obtindre més informació sobre per què i com emprar aquests camps, veieu Restricció de l'emissor i el subjecte del certificat permesos.
1. Prepareu fitxers amb els certificats de CA de nivell superior, el certificat/cadena de certificats del servei web Zabbix i la clau privada tal com es descriu a la secció Servidor Zabbix. A continuació, editeu els paràmetres TLSCAFile
, TLSCertFile
i TLSKeyFile
al fitxer de configuració del servei web Zabbix en conseqüència.
2. Editeu un paràmetre TLS addicional al fitxer de configuració del servei web Zabbix: TLSAccept=cert
Els paràmetres TLS del fitxer de configuració del servei web final poden tindre el següent aspecte:
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSCertFile=/home/zabbix/zabbix_web_service.crt
TLSKeyFile=/home/zabbix/zabbix_web_service.key
3. Configureu el servidor Zabbix per connectar-se al servei web Zabbix configurat per TLS editant el paràmetre WebServiceURL
al fitxer de configuració del servidor Zabbix:
Quan dos components (per exemple, el servidor Zabbix i l'agent) estableixen una connexió TLS, cadascun comprova els certificats de l'altre. Si un certificat igual signat per una CA de confiança (amb un certificat de nivell superior preconfigurat a "TLSCAFile") és vàlid, no ha caducat i passa més comprovacions, la comunicació pot continuar. L'emissor i el subjecte del certificat no es comprova en aquest cas més senzill.
Hi ha el risc que qualsevol persona amb un certificat vàlid pugui suplantar la identitat d'una altra persona (per exemple, es pot emprar un certificat d'equip per suplantar la identitat d'un servidor). Això pot ser acceptable en entorns petits on els certificats són signats per una CA interna dedicada i el risc de suplantació d'identitat és baix.
Si la vostra CA de nivell superior s'empra per emetre altres certificats que Zabbix no hauria d'acceptar o si voleu reduir el risc de falsificació, podeu restringir els certificats permesos especificant-ne el remitent i l'assumpte.
Per exemple, podeu escriure al fitxer de configuració del proxy Zabbix:
TLSServerCertIssuer=CN=Signing CA,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Servidor Zabbix,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
Amb aquesta configuració, el proxy actiu no es comunicarà amb el servidor Zabbix amb una cadena d'emissor o una cadena de subjecte diferent al certificat, i el proxy passiu no acceptarà peticions d'aquest servidor.
Algunes notes sobre la concordança de la cadena del remitent o de l'assumpte:
L'ordre dels camps a les cadenes Entrega per i Assumpte i el format són importants! Zabbix segueix les recomanacions de RFC 4514 i empra l'ordre "inversa" dels camps.
L'ordre inversa es pot il·lustrar amb l'exemple següent:
TLSServerCertIssuer=CN=Signing CA,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Proxy Zabbix,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
Tingueu en compte que comença amb el nivell baix (CN), va al nivell mitjà (OU, O) i acaba amb els camps de nivell superior (DC).
OpenSSL mostra per defecte els camps Emissor i Assumpte del certificat en ordre "normal", depenent de les opcions addicionals emprades:
$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject
emissor= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grup de desenvolupament/CN=Signing CA
subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grup de desenvolupament/CN=Proxy Zabbix
$ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
Certificació:
...
Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grup de desenvolupament, CN=Signing CA
...
Assumpte: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grup de desenvolupament, CN=proxy Zabbix
Aquí les cadenes Emissor i Subject comencen amb el nivell superior (DC) i acaben amb un camp de nivell baix (CN), els espais i els separadors de camps depenen de les opcions emprades. Cap d'aquests valors coincidirà als camps Remitent i Assumpte de Zabbix!
Per obtindre les cadenes correctes d'emissor i subjecte que es puguin emprar a Zabbix, executeu OpenSSL amb opcions especials
(-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
Ara els camps de cadena són en ordre invers, els camps són separats per comes, es poden emprar en fitxers de configuració i a la interfície Zabbix.
Emissor
i Assumpte
.Les regles per fer coincidir les cadenes Emissor
i Assumpte
són les següents:
Emissor
i Assumpte
es comproven de manera independent. Tots dos són opcionals.*
) ni les expressions regulars.\
', U+005C):
"
' (U+0022), '+
' (U+002B), ',
' (U+002C), ';
' (U+003B), '<
' (U+003C), '>
' (U+003E), '`\'' (U+005C);Per exemple, si les cadenes d'organització Emissor' i
Assumpte(
O) contenen espais al final i la cadena de la unitat organitzativa
Assumpte(
OU`) conté cometes dobles, aquests caràcters s'han d'escapar:
TLSServerCertIssuer=CN=Signing CA,OU=Development head,O=\ Example SIA\ ,DC=example,DC=com
TLSServerCertSubject=CN=Zabbix server,OU=Development group \"5\",O=\ Example SIA\ ,DC=example,DC=com
Zabbix segueix les recomanacions de RFC 4514, que especifica un ordre "invers" per a aquests camps, començant pels camps de nivell més baix (CN
), seguint als camps de nivell mitjà (OU
, O
) i concloent amb els camps de nivell més alt (DC
).
TLSServerCertIssuer=CN=Signing CA,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
TLSServerCertSubject=CN=Proxy Zabbix,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com
En canvi, OpenSSL mostra per defecte les cadenes Emissor
i Assumpte
en ordre de nivell superior a nivell baix. A l'exemple següent, els camps Emissor
i Assumpte
comencen amb el nivell superior ("DC") i acaben amb el camp de nivell baix ("CN"). El format amb espais i separadors de camps també varia en funció de les opcions emprades i, per tant, no coincidirà amb el format requerit per Zabbix.
$ openssl x509 -noout -in /home/zabbix/zabbix_proxy.crt -issuer -subject
issuer= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grup de desenvolupament/CN=Signing CA
subject= /DC=com/DC=zabbix/O=Zabbix SIA/OU=Grup de desenvolupament/CN=Proxy Zabbix
$ openssl x509 -noout -text -in /home/zabbix/zabbix_proxy.crt
Certificat:
...
Emissor: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grup de desenvolupament, CN=Signing CA
...
Assumpte: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grup de desenvolupament, CN=proxy Zabbix
Per formatar correctament les cadenes Emissor i Assumpte per a Zabbix, invoqueu OpenSSL amb les opcions següents:
$ openssl x509 -noout -issuer -subject \
-nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname\
-a /home/zabbix/zabbix_proxy.crt
Aleshores, la sortida estarà en ordre invers, separada per comes i es podrà emprar als fitxers de configuració i a la interfície de Zabbix:
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
Quan s'implementen certificats X.509 v3 dins de Zabbix, és possible que algunes extensions no siguin totalment compatibles o poden provocar un comportament inconsistent.
Extensió Subject Alternative Name
Zabbix no admet l'extensió Subject Alternative Name, que s'empra per especificar noms DNS alternatius, com ara adreces IP o adreces de correu electrònic. Zabbix només pot validar el valor del camp Assumpte del certificat (vegeu Restricció de l'emissor i l'assumpte de certificats permesos). Si els certificats inclouen el camp subjectAltName
, el resultat de la validació del certificat pot variar en funció dels conjunts d'eines de criptografia específics utilitzats per compilar components Zabbix. Com a resultat, Zabbix pot acceptar o rebutjar certificats basats en aquestes combinacions.
Extensió Extended Key Usage
Zabbix admet l'extensió Extended Key Usage. Tanmateix, si s'empra, generalment es requereix que s'especifiquin tant els atributs clientAuth (per a l'autenticació de client TLS WWW) com serverAuth (per a l'autenticació de servidor TLS WWW). Per exemple:
Tot i que GnuTLS pot emetre un avís per infraccions d'ús de claus, normalment permet que la comunicació continuï malgrat aquests avisos.
Extensió Name Constraints
El suport per a l'extensió Name Constraints varia entre els kits d'eines de criptografia. Assegureu-vos que el conjunt d'eines que trieu admet aquesta extensió. Aquesta extensió pot restringir Zabbix de carregar certificats de CA si aquesta secció és marcada com a crítica, depenent del conjunt d'eines específic que s'empra.
Si un certificat és compromès, l'autoritat de certificació pot revocar-lo incloent-lo a la llista de revocació de certificats. Els CRL es poden configurar al fitxer de configuració del servidor, el proxy i l'agent mitjançant el paràmetre TLSCRLFile
. Per exemple:
on zabbix_crl_file
pot contindre llistes de revocació de certificats de diverses autoritats de certificació i assemblar-se a:
-----BEGIN X509 CRL-----
MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
...
treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
-----END X509 CRL-----
-----BEGIN X509 CRL-----
MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
...
CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
-----END X509 CRL-----
El fitxer CRL només es carrega a l'inici de Zabbix. L'actualització de la llista de revocació de certificats requereix un reinici.
Si el component Zabbix es compila amb OpenSSL i s'empren llistes de revocació de certificats, cada CA de nivell superior i mitjà de les cadenes de certificats ha de tindre una llista de revocació de certificats (pot ésser buida) a "TLSCRLFile".