Zabbix може да користи RSA сертификате у PEM формату, потписане од стране јавног или интерног ауторитета за сертификате (CA).
Верификација сертификата се врши у односу на унапред конфигурисани CA сертификат. Опционо, могу се користити Листе опозива сертификата (CRL).
Свака Zabbix компонента може имати конфигурисан само један сертификат.
За више информација о подешавању и раду интерног CA, генерисању и потписивању захтева за сертификате и опозивању сертификата, погледајте туторијале као што је OpenSSL PKI Tutorial v2.0.
Пажљиво размотрите и тестирајте проширења својих сертификата. За више детаља, погледајте Ограничења коришћења X.509 v3 проширења сертификата.
Следећи параметри конфигурације су подржани за подешавање сертификата на Zabbix компонентама.
Parameter | Mandatory | Description |
---|---|---|
TLSCAFile | yes | Пуна путања датотеке која садржи сертификате CA највишег нивоа за верификацију сертификата вршњака. Ако користите ланац сертификата са више чланова, прво поређајте сертификате са сертификатима CA нижег нивоа, а затим сертификате CA вишег нивоа. Сертификати из више CA могу бити укључени у једну датотеку. |
TLSCRLFile | no | Пуна путања датотеке која садржи Листе опозваних сертификата (CRL). |
TLSCertFile | yes | Пуна путања датотеке која садржи сертификат. Ако користите ланац сертификата са више чланова, поређајте сертификате тако да прво буду сертификати сервера, проксија или агента, затим сертификати CA нижег нивоа, и на крају сертификати CA вишег нивоа. |
TLSKeyFile | yes | Пуна путања датотеке која садржи приватни кључ. Уверите се да ову датотеку може да чита само Zabbix корисник подешавањем одговарајућих права приступа. |
TLSServerCertIssuer | no | Дозвољени издавалац сертификата сервера. |
TLSServerCertSubject | no | Дозвољени субјект сертификата сервера. |
Након подешавања потребних сертификата, конфигуришите Zabbix компоненте да користе шифровање засновано на сертификатима.
Испод су детаљни кораци за конфигурисање:
1. In order to verify peer certificates, Zabbix server must have access to file with their top-level self-signed root CA certificates. For example, if we expect certificates from two independent root CAs, we can put their certificates into file /home/zabbix/zabbix_ca_file
like this:
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. Put Zabbix server certificate chain into file, for example, /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-----
Here the first is Zabbix server certificate, followed by intermediate CA certificate.
Use of any attributes except of the ones mentioned above is discouraged for both client and server certificates, because it may affect certificate verification process. For example, OpenSSL might fail to establish encrypted connection if X509v3 Extended Key Usage or Netscape Cert Type are set. See also: Limitations on using X.509 v3 certificate extensions.
3. Put Zabbix server private key into file, for example, /home/zabbix/zabbix_server.key
:
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
...
IJLkhbybBYEf47MLhffWa7XvZTY=
-----END PRIVATE KEY-----
4. Edit TLS parameters in Zabbix server configuration file like this:
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSCertFile=/home/zabbix/zabbix_server.crt
TLSKeyFile=/home/zabbix/zabbix_server.key
Припремите датотеке са CA сертификатима највишег нивоа, Zabbix прокси сертификатом/ланцем сертификата и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile
, TLSCertFile
и TLSKeyFile
у Zabbix прокси конфигурационој датотеци у складу са тим.
Уредите додатне TLS параметре у Zabbix прокси конфигурационој датотеци:
TLSConnect=cert
TLSAccept=cert
Да бисте побољшали безбедност проксија, можете подесити и параметре TLSServerCertIssuer
и TLSServerCertSubject
. За више информација, погледајте Ограничавање дозвољеног издаваоца сертификата и субјекта.
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 сервер,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com
TLSCertFile=/home/zabbix/zabbix_proxy.crt
TLSKeyFile=/home/zabbix/zabbix_proxy.key
3. Конфигуришите шифровање за овај прокси у Zabbix кориснички интерфејс:
У доњим примерима, поља Издавалац и Наслов су попуњена. За више информација о томе зашто и како користити ова поља, погледајте Ограничавање дозвољеног издаваоца сертификата и наслова.
За активни прокси:
За пасивни прокси:
Припремите датотеке са CA сертификатима највишег нивоа, сертификатом/ланцем сертификата Zabbix агента и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile
, TLSCertFile
и TLSKeyFile
у конфигурационој датотеци Zabbix агента у складу са тим.
Уредите додатне TLS параметре у конфигурационој датотеци Zabbix агента:
TLSConnect=cert
TLSAccept=cert
Да бисте побољшали безбедност агента, можете подесити параметре TLSServerCertIssuer
и TLSServerCertSubject
. За више информација погледајте Ограничавање дозвољеног издаваоца сертификата и субјекта.
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
У доњем примеру, поља Издавалац и Наслов су попуњена. За више информација о томе зашто и како користити ова поља, погледајте Ограничавање дозвољеног издаваоца сертификата и наслова.
Припремите датотеке са CA сертификатима највишег нивоа, сертификатом/ланцем сертификата Zabbix веб сервиса и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile
, TLSCertFile
и TLSKeyFile
у конфигурационој датотеци Zabbix веб сервиса у складу са тим.
Измените додатни TLS параметар у конфигурационој датотеци Zabbix веб сервиса: TLSAccept=cert
TLS параметри у коначној конфигурационој датотеци веб сервиса могу изгледати овако:
TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file
TLSCertFile=/home/zabbix/zabbix_web_service.crt
TLSKeyFile=/home/zabbix/zabbix_web_service.key
WebServiceURL
у конфигурационој датотеци Zabbix сервера:Када две Zabbix компоненте (на пример, сервер и агент) успоставе TLS везу, оне међусобно валидирају сертификате. Ако је peer сертификат потписан од стране поузданог CA (са унапред конфигурисаним сертификатом највишег нивоа у TLSCAFile
), важећи је, није истекао и прође друге провере, онда комуникација између компоненти може да се настави. У овом најједноставнијем случају, издавалац сертификата и субјект нису верификовани.
Међутим, ово представља ризик: свако ко има важећи сертификат може да се представља као било ко други (на пример, сертификат хоста може се користити за представљање сервера). Иако ово може бити прихватљиво у малим окружењима где сертификате потписује наменски интерни CA и ризик од представљања је низак, можда неће бити довољно у већим или окружењима осетљивијим на безбедност.
Ако ваш CA највишег нивоа издаје сертификате које Zabbix не би требало да прихвати или ако желите да смањите ризик од представљања, можете ограничити дозвољене сертификате тако што ћете навести њиховог издаваоца и субјекта.
На пример, у конфигурационој датотеци Zabbix проксија, можете навести:
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
Са овим подешавањима, активни прокси неће комуницирати са Zabbix сервером чији сертификат има другог издаваоца или тему. Слично томе, пасивни прокси неће прихватати захтеве са таквог сервера.
Issuer
и Subject
Правила за упаривање стрингова Issuer
и Subject
су следећа:
Issuer
и Subject
се проверавају независно. Оба су опциона.*
) или регуларни изрази нису подржани.\
', U+005C):"
' (U+0022), '+
' (U+002B), ',
' (U+002C), ';
' (U+003B), '<
' (U+003C), '>
' (U+003E), '\\
' (U+005C);#
', U+0023);На пример, ако стрингови организације Issuer
и Subject
(O
) садрже размаке на крају, а стринг организационе јединице Subject
(OU
) садржи двоструке наводнике, ови знакови морају бити избегнути:
TLSServerCertIssuer=CN=Signing CA,OU=Development head,O=\ Example SIA\ ,DC=example,DC=com
TLSServerCertSubject=CN=Zabbix сервер,OU=Development group \"5\",O=\ Example SIA\ ,DC=example,DC=com
Zabbix прати препоруке RFC 4514, који одређује „обрнути“ редослед за ова поља, почевши од поља најнижег нивоа (CN
), преко поља средњег нивоа (OU
, O
), и завршавајући са пољима највишег нивоа (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
Насупрот томе, OpenSSL подразумевано приказује стрингове Issuer
и Subject
редоследом од највишег до најнижег нивоа. У следећем примеру, поља „Издавалац“ и „Наслов“ почињу пољем највишег нивоа („DC“) и завршавају се пољем нижег нивоа („CN“). Форматирање размацима и сепараторима поља такође варира у зависности од коришћених опција и стога се неће подударати са форматом који захтева Zabbix.
$ опенссл к509 -нооут -ин /хоме/заббик/заббик_проки.црт -издавач -субјецт
издавач= /ДЦ=цом/ДЦ=заббик/О=Заббик СИА/ОУ=Развојна група/ЦН=Потписујући ЦА
субјецт= /ДЦ=цом/ДЦ=заббик/О=Заббик СИА/ОУ=Развојна група/ЦН=Заббик проки
$ опенссл к509 -нооут -тект -ин /хоме/заббик/заббик_проки.црт
сертификат:
...
Издавач: ДЦ=цом, ДЦ=заббик, О=Заббик СИА, ОУ=Развојна група, ЦН=потписни ЦА
...
Предмет: ДЦ=цом, ДЦ=заббик, О=Заббик СИА, ОУ=Развојна група, ЦН=Заббик проки
Да бисте правилно форматирали низове Иссуер и Субјецт за Заббик, Позовите OpenSSL са следећим опцијама:
$ 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
Излаз ће тада бити у обрнутом редоследу, одвојен зарезима и употребљив у 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
Приликом имплементације X.509 v3 сертификата унутар Zabbix-а, одређене екстензије можда неће бити у потпуности подржане или могу довести до недоследног понашања.
Екстензија за алтернативно име субјекта
Zabbix не подржава екстензију Алтернативно име субјекта, која се користи за одређивање алтернативних DNS имена као што су IP адресе или имејл адресе. Zabbix може само да валидира вредност у пољу Наслов сертификата (погледајте Ограничавање дозвољеног издаваоца сертификата и субјекта). Ако сертификати садрже поље subjectAltName
, исход валидације сертификата може да варира у зависности од специфичних крипто алата који се користе за компајлирање Zabbix компоненти. Као резултат тога, Zabbix може или да прихвати или да одбије сертификате на основу ових комбинација.
Екстензија за проширену употребу кључа
Zabbix подржава екстензију Проширена употреба кључа. Међутим, ако се користи, генерално је потребно да буду наведени и атрибути clientAuth (за аутентификацију TLS WWW клијента) и serverAuth (за аутентификацију TLS WWW сервера). На пример:
Код пасивних провера, где Zabbix агент ради као TLS сервер, атрибут serverAuth мора бити укључен у сертификат агента.
Код активних провера, где агент ради као TLS клијент, атрибут clientAuth мора бити укључен у сертификат агента.
Иако GnuTLS може издати упозорење за кршења употребе кључа, обично дозвољава да се комуникација настави упркос овим упозорењима.
Проширење „Ограничења имена“
Подршка за проширење Ограничења имена варира међу крипто алатима. Уверите се да изабрани алат подржава ово проширење. Ово проширење може ограничити Zabbix у учитавању CA сертификата ако је овај одељак означен као критичан, у зависности од специфичног алата који се користи.
If a certificate is compromised CA can revoke it by including in CRL. CRLs can be configured in server, proxy and agent configuration file using parameter TLSCRLFile
. For example:
where zabbix_crl_file
may contain CRLs from several CAs and look like:
-----BEGIN X509 CRL-----
MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
...
treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
-----END X509 CRL-----
-----BEGIN X509 CRL-----
MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
...
CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
-----END X509 CRL-----
CRL file is loaded only on Zabbix start. CRL update requires restart.
If Zabbix component is compiled with OpenSSL and CRLs are used then each top and intermediate level CA in certificate chains must have a corresponding CRL (it can be empty) in TLSCRLFile
.