1 Коришћење сертификата

Преглед

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 компоненте да користе шифровање засновано на сертификатима.

Испод су детаљни кораци за конфигурисање:

Configuring certificate on Zabbix server

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
Zabbix прокси
  1. Припремите датотеке са CA сертификатима највишег нивоа, Zabbix прокси сертификатом/ланцем сертификата и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile, TLSCertFile и TLSKeyFile у Zabbix прокси конфигурационој датотеци у складу са тим.

  2. Уредите додатне 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 кориснички интерфејс:

  • Идите на: Администрација → Проксији.
  • Изаберите прокси и кликните на картицу Шифровање.

У доњим примерима, поља Издавалац и Наслов су попуњена. За више информација о томе зашто и како користити ова поља, погледајте Ограничавање дозвољеног издаваоца сертификата и наслова.

За активни прокси:

За пасивни прокси:

Zabbix агент
  1. Припремите датотеке са CA сертификатима највишег нивоа, сертификатом/ланцем сертификата Zabbix агента и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile, TLSCertFile и TLSKeyFile у конфигурационој датотеци Zabbix агента у складу са тим.

  2. Уредите додатне 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
  1. Конфигуришите шифровање у Zabbix кориснички интерфејс за домаћина који прати овај агент.
  • Идите на: Прикупљање података → Домаћини.
  • Изаберите домаћина и кликните на картицу Шифровање.

У доњем примеру, поља Издавалац и Наслов су попуњена. За више информација о томе зашто и како користити ова поља, погледајте Ограничавање дозвољеног издаваоца сертификата и наслова.

Zabbix веб сервис
  1. Припремите датотеке са CA сертификатима највишег нивоа, сертификатом/ланцем сертификата Zabbix веб сервиса и приватним кључем као што је описано у одељку Zabbix сервер. Затим, уредите параметре TLSCAFile, TLSCertFile и TLSKeyFile у конфигурационој датотеци Zabbix веб сервиса у складу са тим.

  2. Измените додатни 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
  1. Конфигуришите Zabbix сервер да се повеже са TLS-конфигурисаним Zabbix веб сервисом уређивањем параметра WebServiceURL у конфигурационој датотеци Zabbix сервера:
WebServiceURL=https://example.com

Ограничавање дозвољеног издаваоца сертификата и субјекта

Када две 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 се проверавају независно. Оба су опциона.
  • Неодређени стринг значи да се прихвата било који стринг.
  • Стрингови се упоређују какви јесу и морају се тачно подударати.
  • Подржани су UTF-8 знакови. Међутим, џокери (*) или регуларни изрази нису подржани.
  • Следећи захтеви RFC 4514 су имплементирани - знакови који захтевају излаз (са обрнутом косом цртом '\', U+005C):
  • било где у стрингу: '"' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '\\' (U+005C);
  • на почетку стринга: размак (' ', U+0020) или знак броја ('#', U+0023);
  • на крају стринга: размак (' ', U+0020).
  • Нулти знакови (U+0000) нису подржани. Ако се наиђе на празан знак, подударање неће успети.
  • Стандарди RFC 4517 и RFC 4518 нису подржани.

На пример, ако стрингови организације 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 екстензија сертификата

Приликом имплементације 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 сертификата ако је овај одељак означен као критичан, у зависности од специфичног алата који се користи.

Certificate Revocation Lists (CRL)

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:

TLSCRLFile=/home/zabbix/zabbix_crl_file

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.