1 Emprant certificats

Vista general

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àmetres de configuració del certificat

Paràmetre Obligatori Descripció
TLSCAFile 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.

Exemples de configuració

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ó:

Configurant un certificat al servidor Zabbix

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:

```ini
       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.

       :::noteclassic
       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](/manual/encryption/using_certificates#limitations_on_using_x509_v3_certificate_extensions).
       :::

       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:

       ```ini
        TLSCAFile=/home/zabbix/zabbix_ca_file
        TLSCertFile=/home/zabbix/zabbix_server.crt
        TLSKeyFile=/home/zabbix/zabbix_server.key

Proxy Zabbix

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. Editeu els paràmetres adicionals a l'arxiu de configuració del proxy Zabbix:

  • Per al proxy actiu: TLSConnect=cert

  • Per a un proxy passiu: TLSAccept=cert

Per millorar la seguretat del proxy, podeu configurar els paràmetres TLSServerCertIssuer i TLSServerCertSubject. Per a més informació, veieu les restriccions permeses de l'emissor i de l'assumpte.

Al fitxer de configuració del proxy final, la configuració de TLS podria semblar així:

```ini
        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
       ```

3. Configureu el xifrat per a aquest proxy a la interfície Zabbix:

  • Aneu a: Administració → Proxys
  • Trieu un proxy i feu clic a la pestanya Xifrat

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:

Agent Zabbix

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 l'arxiu de configuració de l'agent Zabbix com pertoqui.

2. Editeu els paràmetres TLS addicionals a l'arxiu de configuració de l'agent Zabbix:

  • Per al monitoratge actiu: TLSConnect=cert

  • Per al monitoratge passiu: TLSAccept=cert

Podeu millorar la seguretat de l'agent configurant els paràmetres TLSServerCertIssuer' iTLSServerCertSubject` (veieu Restricció de l'emissor i del assumpte permesos).

Els paràmetres TLS a la configuració final de l'agent serien com tot seguit. Fixeu-vos que l'exemple assumeix que l'equip és monitorat per un proxy; per tant, s'especifica com a Assumpte el certificat:

```ini
        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 per a aquest agent a la interfície Zabbix:

  • Aneu a: Recull de dades → Equips
  • Trieu l'equip i feu clic a la pestanya Xifrat

A l'exemple següent, s'emplenen els camps Emissor i Assumpte. Veieu a restricció de l'emissor i l'assumpte permesos per què i com emprar aquests camps.

Servei web Zabbix

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 tenir 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:

WebServiceURL=https://example.com

Restricció de l'emissor i receptor autoritzats

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.

Regles per fer coincidir les cadenes Emissor i Assumpte

Les regles per fer coincidir les cadenes Emissor i Assumpte són les següents:

  • Les cadenes Emissor i Assumpte es comproven de manera independent. Tots dos són opcionals.
  • Una cadena no especificada significa que s'accepta qualsevol cadena.
  • Les cadenes es comparen tal com estan i han de coincidir exactament.
  • S'admeten caràcters UTF-8. Tanmateix, no s'admeten els comodins (*) ni les expressions regulars.
  • S'implementen els requisits RFC 4514 següents: caràcters que requereixen escapar (amb una barra invertida '\', U+005C):
    • en qualsevol lloc de la cadena: '"' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '`\'' (U+005C);
    • al començament de la cadena: espai (' ', U+0020) o signe de número (''#'', U+0023);
    • al final de la cadena: espai (' ', U+0020).
  • Els caràcters nuls (U+0000) no s'admeten. Si es troba un caràcter nul, la concordança fallarà.
  • Els estàndards RFC 4517 i RFC 4518 no són pas compatibles.

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=Cap de desenvolupament,O=\ Exemple SIA\ ,DC=exemple,DC=com
       TLSServerCertSubject=CN=Servidor Zabbix,OU=Grup de desenvolupament \"5\",O=\ Exemple SIA\ ,DC=exemple,DC=com
Ordre i format dels camps

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), continuant als camps de nivell mig (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 inferior. A l'exemple següent, els camps Emissor i Assumpte comencen al nivell superior ("DC") i acaben amb el camp de nivell inferior ("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
       Certificate:
           ...
               Issuer: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grup de desenvolupament, CN=Signing CA
               ...
               Subect: DC=com, DC=zabbix, O=Zabbix SIA, OU=Grup de desenvolupament, CN=proxy Zabbix

Per formatar correctament les cadenes Emissor i Subject 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= Signatura CA, OU= grup de desenvolupament, O= Zabbix SIA, DC=zabbix, DC=com
       subject= CN=proxy Zabbix,OU=Grup de desenvolupament,O=Zabbix SIA,DC=zabbix,DC=com

Limitacions en l'ús de les extensions de certificat X.509 v3

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:

  • A les comprovacions passives, on l'agent Zabbix funciona com a servidor TLS, l'atribut serverAuth s'ha d'incloure al certificat de l'agent.
  • A les comprovacions actives, on l'agent opera com a client TLS, l'atribut clientAuth s'ha d'incloure al certificat de l'agent.

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.

Llistes de revocació de certificats (CRL)

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:

     TLSCRLFile=/home/zabbix/zabbix_crl_file

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.