1 Utilizzo dei certificati
Panoramica
Zabbix può utilizzare certificati RSA in formato PEM, firmati da un'autorità di certificazione (CA) pubblica o interna.
La verifica del certificato viene eseguita rispetto a un certificato CA preconfigurato. Facoltativamente, è possibile utilizzare le Certificate Revocation Lists (CRL).
Ogni componente Zabbix può avere configurato un solo certificato.
Per ulteriori informazioni sulla configurazione e sulla gestione di una CA interna, sulla generazione e firma delle richieste di certificato e sulla revoca dei certificati, fare riferimento a tutorial come OpenSSL PKI Tutorial v2.0.
Valutare attentamente e testare le estensioni dei certificati. Per maggiori dettagli, vedere Limitazioni sull'utilizzo delle estensioni dei certificati X.509 v3.
Parametri di configurazione dei certificati
I seguenti parametri di configurazione sono supportati per impostare i certificati sui componenti Zabbix.
| Parametro | Obbligatorio | Descrizione |
|---|---|---|
| TLSCAFile | sì | Percorso completo di un file contenente i certificati della/e CA di livello superiore per la verifica del certificato del peer. Se si utilizza una catena di certificati con più membri, ordinare prima i certificati della/e CA di livello inferiore, seguiti dai certificati della/e CA di livello superiore. I certificati di più CA possono essere inclusi in un singolo file. |
| TLSCRLFile | no | Percorso completo di un file contenente le Liste di revoca dei certificati (CRL). |
| TLSCertFile | sì | Percorso completo di un file contenente il certificato. Se si utilizza una catena di certificati con più membri, ordinare prima il certificato del server, proxy o agent, seguito dai certificati della/e CA di livello inferiore, e infine dai certificati della/e CA di livello superiore. |
| TLSKeyFile | sì | Percorso completo di un file contenente la chiave privata. Assicurarsi che questo file sia leggibile solo dallo utente Zabbix impostando diritti di accesso appropriati. |
| TLSServerCertIssuer | no | Autorità emittente consentita del certificato del server. |
| TLSServerCertSubject | no | Soggetto consentito del certificato del server. |
Esempi di configurazione
Dopo aver configurato i certificati necessari, configurare i componenti Zabbix per utilizzare la crittografia basata su certificati.
Di seguito sono riportati i passaggi dettagliati per la configurazione di:
Zabbix server
1. Preparare il file del certificato CA.
Per verificare i certificati del peer, il server Zabbix deve avere accesso al file contenente i certificati root CA autofirmati di livello superiore.
Ad esempio, se sono necessari certificati di due root CA indipendenti, inserirli in un file in /home/zabbix/zabbix_ca_file.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=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. Inserire il certificato/la catena di certificati del server Zabbix in un file, ad esempio in /home/zabbix/zabbix_server.crt.
Il primo certificato è il certificato del server Zabbix, seguito dal certificato CA intermedio:
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-----
Utilizzare solo gli attributi sopra menzionati sia per i certificati client che per quelli server, per evitare di influire sul processo di verifica del certificato. Ad esempio, OpenSSL potrebbe non riuscire a stabilire una connessione cifrata se vengono utilizzate le estensioni X509v3 Subject Alternative Name o Netscape Cert Type. Per ulteriori informazioni, vedere Limitations on using X.509 v3 certificate extensions.
3. Inserire la chiave privata del server Zabbix in un file, ad esempio in /home/zabbix/zabbix_server.key:
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
...
IJLkhbybBYEf47MLhffWa7XvZTY=
-----END PRIVATE KEY-----
4. Modificare i parametri di configurazione TLS nel file di configurazione del server Zabbix:
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSCertFile=/home/zabbix/zabbix_server.crt
TLSKeyFile=/home/zabbix/zabbix_server.key
Zabbix proxy
1. Preparare i file con i certificati CA di livello superiore, il certificato/la catena di certificati del proxy Zabbix e la chiave privata come descritto nella sezione Zabbix server.
Quindi, modificare di conseguenza i parametri TLSCAFile, TLSCertFile e TLSKeyFile nel file di configurazione del proxy Zabbix.
2. Modificare i parametri TLS aggiuntivi nel file di configurazione del proxy Zabbix:
- Per proxy attivo:
TLSConnect=cert - Per proxy passivo:
TLSAccept=cert
Per migliorare la sicurezza del proxy, è possibile impostare anche i parametri TLSServerCertIssuer e TLSServerCertSubject.
Per ulteriori informazioni, vedere Limitazione dell'autorità emittente e del soggetto del certificato consentiti.
I parametri TLS nel file di configurazione finale del proxy possono apparire come segue:
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
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.key
3. Configurare la crittografia per questo proxy nel frontend Zabbix:
- Andare in: Administration → Proxies.
- Selezionare il proxy e fare clic sulla scheda Encryption.
Negli esempi seguenti, i campi Issuer e Subject sono compilati. Per ulteriori informazioni sul perché e su come utilizzare questi campi, vedere Limitazione dell'autorità emittente e del soggetto del certificato consentiti.
Per proxy attivo:

Per proxy passivo:

Zabbix agent
1. Preparare i file con i certificati CA di livello superiore, il certificato/la catena di certificati di Zabbix agent e la chiave privata come descritto nella sezione Zabbix server.
Quindi, modificare di conseguenza i parametri TLSCAFile, TLSCertFile e TLSKeyFile nel file di configurazione di Zabbix agent.
2. Modificare i parametri TLS aggiuntivi nel file di configurazione di Zabbix agent:
- Per agent attivo:
TLSConnect=cert - Per agent passivo:
TLSAccept=cert
Per migliorare la sicurezza dell'agent, è possibile impostare i parametri TLSServerCertIssuer e TLSServerCertSubject.
Per ulteriori informazioni, vedere Limitazione dell'emittente e del soggetto del certificato consentiti.
I parametri TLS nel file di configurazione finale dell'agent possono apparire come segue. Si noti che l'esempio presuppone che l'host sia monitorato da un proxy, pertanto questo è specificato come Subject del certificato:
TLSConnect=cert
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
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
3. Configurare la crittografia in Zabbix frontend per l'host monitorato da questo agent.
- Andare in: Raccolta dati → Host.
- Selezionare l'host e fare clic sulla scheda Crittografia.
Nell'esempio seguente, i campi Issuer e Subject sono compilati. Per ulteriori informazioni sul perché e su come utilizzare questi campi, vedere Limitazione dell'emittente e del soggetto del certificato consentiti.

Servizio web Zabbix
1. Preparare i file con i certificati CA di livello superiore, il certificato/la catena di certificati del servizio web Zabbix e la chiave privata come descritto nella sezione Zabbix server.
Quindi, modificare i parametri TLSCAFile, TLSCertFile e TLSKeyFile nel file di configurazione del servizio web Zabbix di conseguenza.
2. Modificare un parametro TLS aggiuntivo nel file di configurazione del servizio web Zabbix: TLSAccept=cert
I parametri TLS nel file di configurazione finale del servizio web possono apparire come segue:
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSCertFile=/home/zabbix/zabbix_web_service.crt
TLSKeyFile=/home/zabbix/zabbix_web_service.key
3. Configurare Zabbix server per connettersi al servizio web Zabbix configurato con TLS modificando il parametro WebServiceURL nel file di configurazione di Zabbix server:
WebServiceURL=https://example.com:443/report
Limitazione dell'autorità emittente e del soggetto del certificato consentiti
Quando due componenti Zabbix (ad esempio, server e agent) stabiliscono una connessione TLS, verificano reciprocamente i rispettivi certificati.
Se il certificato del peer è firmato da una CA attendibile (con un certificato di livello superiore preconfigurato in TLSCAFile), è valido, non è scaduto e supera gli altri controlli, la comunicazione tra i componenti può procedere.
In questo caso più semplice, l'autorità emittente e il soggetto del certificato non vengono verificati.
Tuttavia, questo comporta un rischio: chiunque disponga di un certificato valido può impersonare chiunque altro (ad esempio, un certificato host potrebbe essere usato per impersonare un server). Sebbene ciò possa essere accettabile in ambienti piccoli, in cui i certificati sono firmati da una CA interna dedicata e il rischio di impersonificazione è basso, potrebbe non essere sufficiente in ambienti più grandi o più sensibili dal punto di vista della sicurezza.
Se la CA di livello superiore emette certificati che non dovrebbero essere accettati da Zabbix oppure se si desidera ridurre il rischio di impersonificazione, è possibile limitare i certificati consentiti specificandone l'autorità emittente e il soggetto.
Ad esempio, nel file di configurazione di Zabbix proxy, è possibile specificare:
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
Con queste impostazioni, un proxy attivo non comunicherà con un server Zabbix il cui certificato abbia un'autorità emittente o un soggetto diversi. Analogamente, un proxy passivo non accetterà richieste da tale server.
Regole per la corrispondenza delle stringhe Issuer e Subject
Le regole per la corrispondenza delle stringhe Issuer e Subject sono le seguenti:
- Le stringhe
IssuereSubjectvengono controllate in modo indipendente. Entrambe sono facoltative. - Una stringa non specificata significa che viene accettata qualsiasi stringa.
- Le stringhe vengono confrontate così come sono e devono corrispondere esattamente.
- I caratteri UTF-8 sono supportati.
Tuttavia, i caratteri jolly (
*) o le espressioni regolari non sono supportati. - Sono implementati i seguenti requisiti di RFC 4514 - caratteri che richiedono l'escape (con una barra rovesciata '
\', U+005C):- in qualsiasi punto della stringa: '
"' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '\\' (U+005C); - all'inizio della stringa: spazio (' ', U+0020) o cancelletto ('
#', U+0023); - alla fine della stringa: spazio (' ', U+0020).
- in qualsiasi punto della stringa: '
- I caratteri nulli (U+0000) non sono supportati. Se viene rilevato un carattere nullo, la corrispondenza non riuscirà.
- Gli standard RFC 4517 e RFC 4518 non sono supportati.
Ad esempio, se le stringhe dell'organizzazione (O) di Issuer e Subject contengono spazi finali e la stringa dell'unità organizzativa (OU) di Subject contiene virgolette doppie, questi caratteri devono essere preceduti da escape:
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
Ordine e formattazione dei campi
Zabbix segue le raccomandazioni di RFC 4514, che specifica un ordine "inverso" per questi campi, iniziando dai campi di livello più basso (CN), passando ai campi di livello intermedio (OU, O) e concludendo con i campi di livello più alto (DC).
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
Al contrario, OpenSSL per impostazione predefinita visualizza le stringhe Issuer e Subject nell'ordine dal livello più alto a quello più basso.
Nell'esempio seguente, i campi Issuer e Subject iniziano dal livello più alto (DC) e terminano con il campo di livello più basso (CN).
Anche la formattazione con spazi e separatori di campo varia in base alle opzioni utilizzate e quindi non corrisponderà al formato richiesto da Zabbix.
$ 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
Per formattare correttamente le stringhe Issuer e Subject per Zabbix, eseguire OpenSSL con le seguenti opzioni:
$ 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
L'output sarà quindi in ordine inverso, separato da virgole e utilizzabile nei file di configurazione di Zabbix e nel frontend:
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
Limitazioni nell'utilizzo delle estensioni dei certificati X.509 v3
Quando si implementano certificati X.509 v3 in Zabbix, alcune estensioni potrebbero non essere pienamente supportate oppure potrebbero causare comportamenti incoerenti.
Estensione Subject Alternative Name
Zabbix non supporta l'estensione Subject Alternative Name, utilizzata per specificare nomi DNS alternativi come indirizzi IP o indirizzi email.
Zabbix può convalidare solo il valore nel campo Subject del certificato (vedere Restricting Allowed Certificate Issuer and Subject).
Se i certificati includono il campo subjectAltName, il risultato della convalida del certificato può variare a seconda degli specifici toolkit crittografici utilizzati per compilare i componenti di Zabbix.
Di conseguenza, Zabbix può accettare o rifiutare i certificati in base a queste combinazioni.
Estensione Extended Key Usage
Zabbix supporta l'estensione Extended Key Usage. Tuttavia, se utilizzata, in genere è richiesto che siano specificati entrambi gli attributi clientAuth (per l'autenticazione client TLS WWW) e serverAuth (per l'autenticazione server TLS WWW). Ad esempio:
- Nei controlli passivi, in cui Zabbix agent opera come server TLS, l'attributo serverAuth deve essere incluso nel certificato dell'agent.
- Per i controlli attivi, in cui l'agent opera come client TLS, l'attributo clientAuth deve essere incluso nel certificato dell'agent.
Sebbene GnuTLS possa emettere un avviso per violazioni dell'utilizzo della chiave, in genere consente comunque alla comunicazione di procedere nonostante tali avvisi.
Estensione Name Constraints
Il supporto per l'estensione Name Constraints varia tra i toolkit crittografici. Assicurarsi che il toolkit scelto supporti questa estensione. Questa estensione può impedire a Zabbix di caricare i certificati CA se questa sezione è contrassegnata come critica, a seconda dello specifico toolkit in uso.
Liste di revoca dei certificati (CRL)
Se un certificato è compromesso, l'Autorità di certificazione (CA) può revocarlo includendo il certificato in una Lista di revoca dei certificati (CRL).
Le CRL sono gestite tramite file di configurazione e possono essere specificate usando il parametro TLSCRLFile nei file di configurazione di server, proxy e agent.
Ad esempio:
TLSCRLFile=/home/zabbix/zabbix_crl_file.crt
In questo caso, zabbix_crl_file.crt può contenere CRL di più CA e potrebbe apparire così:
-----BEGIN X509 CRL-----
MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
...
treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
-----END X509 CRL-----
-----BEGIN X509 CRL-----
MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
...
CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
-----END X509 CRL-----
Il file CRL viene caricato solo all'avvio di Zabbix. Per aggiornare la CRL, riavviare Zabbix.
Se i componenti Zabbix sono compilati con OpenSSL e vengono utilizzate le CRL, assicurarsi che ogni CA di primo livello e intermedia nelle catene di certificati abbia una CRL corrispondente (anche se vuota) inclusa nel TLSCRLFile.