Zabbix Documentation 4.2

3.04.04.4 (current)| In development:5.0 (devel)| Unsupported:1.82.02.22.43.23.44.2Guidelines

User Tools

Site Tools


ru:manual:encryption:using_certificates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ru:manual:encryption:using_certificates [2017/10/06 14:12]
127.0.0.1 external edit
ru:manual:encryption:using_certificates [2018/10/19 10:08] (current)
Line 1: Line 1:
-==== - #1 Использование сертификатов ====+==== 1 Использование сертификатов ====
  
 === Обзор === === Обзор ===
  
-Zabbix может использовать RSA сертификаты в формате PEM, подписанные центром сертификации (CA). Проверка сертификата выполняется в отношении с предустановленным CA сертификатом. Самоподписанные сертификаты не поддерживаются. Опционально можно использовать списки отзывов сертификатов (CRL). Каждый компонент Zabbix может иметь только один настроенный сертификат.+Zabbix может использовать RSA сертификаты в формате PEM, подписанные ​публичным или внутренним ​центром сертификации (CA). Проверка сертификата выполняется в отношении с заранее подготовленным CA сертификатом. Опционально можно использовать списки отзывов сертификатов (CRL). Каждый компонент Zabbix может иметь только один настроенный сертификат.
  
-Для получения более подробной информации о том как настроить и управлять внутренним CA, как генерировать запросы на сертификаты и подписывать их, как отзывать сертификаты,​ всё это вы можете найти в большом количестве различных руководств в интернет, например,​ [[http://​pki-tutorial.readthedocs.org/​en/​latest/​|OpenSSL PKI Tutorial v1.1]]+Для получения более подробной информации о том как настроить и управлять внутренним CA, как генерировать запросы на сертификаты и подписывать их, как отзывать сертификаты,​ всё это вы можете найти в большом количестве различных руководств в сети, например,​ [[http://​pki-tutorial.readthedocs.org/​en/​latest/​|OpenSSL PKI Tutorial v1.1]].
- +
-=== Ограничения при использовании расширений X.509 v3 сертификатов === +
- +
-  * Расширение **Альтернативное имя темы (//​subjectAltName//​)**. \\ Альтернативные имена тем из //​subjectAltName//​ расширения (такие как IP адрес, e-mail адрес) не поддерживаются Zabbix. В Zabbix проверяется только значение поля "​Тема"​ (смотри [[ru/​manual/​encryption/​using_certificates#​ограничение_разрешенных_эмитента_и_темы_сертификата|Ограничение разрешенных Эмитента и Темы сертификата]]). \\ Если сертификат использует //​subjectAltName//​ расширение,​ тогда результат зависит от конкретной комбинации наборов инструментов криптографии с которыми скомпилированы компоненты Zabbix (это расширение может работать,​ а может и не работать,​ Zabbix может отказаться принимать такие сертификаты от узлов). +
-  * Расширение **Использование Расширенного Ключа**. \\ Если используется,​ то, как правило,​ необходимо указывать как //​clientAuth//​ (TLS WWW аутентификация клиента),​ так и  //​serverAuth//​ (TLS WWW аутентификация сервера). \\ Например,​ при пассивных проверках Zabbix агент выступает в роли TLS сервера,​ таким образом необходимо указать //​serverAuth//​ в сертификате агента. При активных проверках в сертификате агента необходимо задать //​clientAuth//​. \\ //GnuTLS// выводит предупреждение в случае нарушения использования ключа, но разрешает продолжение соединения. +
-  * Расширение **Ограничения Имени**. \\ Не все наборы инструментов криптографии поддерживают его. Это расширение может помешать Zabbix в загрузке CA сертификатов,​ где этот раздел промаркирован как //​критический//​ (зависит от конкретного набора инструментов криптографии).+
  
 +Тщательно продумывайте и тестируйте ваши расширения сертификатов - смотри [[ru:​manual:​encryption/​using_certificates#​ограничения_при_использовании_расширений_X509_v3_сертификатов|Ограничения при использовании расширений X.509 v3 сертификатов]].
 === Параметры настройки сертификатов === === Параметры настройки сертификатов ===
  
 ^Параметр^Обязателен^Описание^ ^Параметр^Обязателен^Описание^
 |//​TLSCAFile// ​ |  *  | Абсолютный путь к файлу, который содержит сертификаты верхнего уровня CA(и) для верификации сертификата узла. При наличии цепочки сертификатов с несколькими членами,​ они должны быть отсортированы:​ сначала следуют сертификаты CA низкого уровня за сертификатами более высокого уровня CA(и). Сертификаты из нескольких CA(и) можно включать в один файл. | |//​TLSCAFile// ​ |  *  | Абсолютный путь к файлу, который содержит сертификаты верхнего уровня CA(и) для верификации сертификата узла. При наличии цепочки сертификатов с несколькими членами,​ они должны быть отсортированы:​ сначала следуют сертификаты CA низкого уровня за сертификатами более высокого уровня CA(и). Сертификаты из нескольких CA(и) можно включать в один файл. |
-|//​TLSCRLFile//​ |     | Абсолютный путь к файлу, который содержит списки отозванных сертификатов. Смотрите заметки в [[ru:​manual:​encryption#​списки_отозванных_сертификатов_crl|Списки отозванных сертификатов (CRL)]]. | +|//​TLSCRLFile//​ |     | Абсолютный путь к файлу, который содержит списки отозванных сертификатов. Смотрите заметки в [[ru:​manual:​encryption/​using_certificates#​списки_отозванных_сертификатов_crl|Списки отозванных сертификатов (CRL)]]. | 
-|//​TLSCertFile//​ |  *  | Абсолютный путь к файлу, который содержит сертификат (цепочку сертификатов). |+|//​TLSCertFile//​ |  *  | Абсолютный путь к файлу, который содержит сертификат (цепочку сертификатов).\\ В случае цепочки сертификатов с несколькими членами они должны быть отсортированы:​ сначала сервер,​ прокси или агент, с последующими CA сертификатами низкого уровня и затем CA сертификаты более высокого уровня. |
 |//​TLSKeyFile// ​ |  *  | Абсолютный путь к файлу, который содержит приватный ключ. Задайте права доступа к этому файлу - он должен быть доступен для чтения только пользователю Zabbix. | |//​TLSKeyFile// ​ |  *  | Абсолютный путь к файлу, который содержит приватный ключ. Задайте права доступа к этому файлу - он должен быть доступен для чтения только пользователю Zabbix. |
 |//​TLSServerCertIssuer// ​  ​| ​    | Разрешенный эмитент сертификата сервера. ​ | |//​TLSServerCertIssuer// ​  ​| ​    | Разрешенный эмитент сертификата сервера. ​ |
-|//​TLSServerCertSubject// ​ |     | Разрешенная тема сертификата сервера. |+|//​TLSServerCertSubject// ​ |     | Разрешенный субъект сертификата сервера. |
  
 === Настройка сертификата на Zabbix сервере === === Настройка сертификата на Zabbix сервере ===
Line 148: Line 143:
   TLSAccept=cert   TLSAccept=cert
  
-3. Теперь у вас есть минимальная настройка прокси на основе сертификата. Вы возможно захотите улучшить безопасность прокси,​ указав параметры ''​TLSServerCertIssuer''​ и ''​TLSServerCertSubject''​ (смотри [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_темы_сертификата|Ограничение разрешенных Эмитента и Темы сертификата]]).+3. Теперь у вас есть минимальная настройка прокси на основе сертификата. Вы возможно захотите улучшить безопасность прокси,​ указав параметры ''​TLSServerCertIssuer''​ и ''​TLSServerCertSubject''​ (смотри [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_субъекта_сертификата|Ограничение разрешенных Эмитента и Субъекта ​сертификата]]).
  
 4. В конечном итоге параметры TLS в файле конфигурации прокси могут выглядеть следующим образом:​ 4. В конечном итоге параметры TLS в файле конфигурации прокси могут выглядеть следующим образом:​
Line 163: Line 158:
   * Выберите прокси и нажмите на вкладку **Шифрование**   * Выберите прокси и нажмите на вкладку **Шифрование**
  
-В примере ниже поля Эмитент и Тема заполнены - смотрите [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_темы_сертификата|Ограничение разрешенных Эмитента и Темы сертификата]] о том, как использовать эти поля.+В примере ниже поля Эмитент и Субъект заполнены - смотрите [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_субъекта_сертификата|Ограничение разрешенных Эмитента и Субъекта ​сертификата]] о том, как использовать эти поля.
  
 При активном прокси При активном прокси
Line 183: Line 178:
   TLSAccept=cert   TLSAccept=cert
  
-3. Теперь у вас есть минимальная настройка агента на основе сертификата. Вы возможно захотите улучшить безопасность агента,​ указав параметры ''​TLSServerCertIssuer''​ и ''​TLSServerCertSubject''​. +3. Теперь у вас есть минимальная настройка агента на основе сертификата. Вы возможно захотите улучшить безопасность агента,​ указав параметры ''​TLSServerCertIssuer''​ и ''​TLSServerCertSubject''​.(смотри [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_субъекта_сертификата|Ограничение разрешенных ​Эмитента и Субъекта сертификата]]).
-(смотри [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_темы_сертификата|Ограничение разрешенных Эмитента и Темы ​сертификата]]). +
-(смотри [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенныхмитента_иемы_сертификата|Ограничение разрешенных Эмитента и Темы ​сертификата]]).+
  
 4. В конечном итоге параметры TLS в файле конфигурации агента могут выглядеть следующим образом:​ 4. В конечном итоге параметры TLS в файле конфигурации агента могут выглядеть следующим образом:​
Line 193: Line 186:
   TLSServerCertIssuer=CN=Signing CA,​OU=Development group,​O=Zabbix SIA,​DC=zabbix,​DC=com   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   TLSServerCertSubject=CN=Zabbix proxy,​OU=Development group,​O=Zabbix SIA,​DC=zabbix,​DC=com
-  TLSCertFile=/​home/​zabbix/​zabbix_agent.crt +  TLSCertFile=/​home/​zabbix/​zabbix_agentd.crt 
-  TLSKeyFile=/​home/​zabbix/​zabbix_agent.key+  TLSKeyFile=/​home/​zabbix/​zabbix_agentd.key
  
-(Пример предполагает,​ что хост наблюдается через прокси,​ отсюда ​Тема сертификата прокси.)+(Пример предполагает,​ что хост наблюдается через прокси,​ отсюда ​Субъект сертификата прокси.)
  
 5. Настройте шифрование этому агенту в веб-интерфейсе Zabbix: 5. Настройте шифрование этому агенту в веб-интерфейсе Zabbix:
Line 202: Line 195:
   * Выберите узел сети и нажмите на вкладку **Шифрование**   * Выберите узел сети и нажмите на вкладку **Шифрование**
  
-В примере ниже поля Эмитент и Тема заполнены - смотрите [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_темы_сертификата|Ограничение разрешенных Эмитента и Темы сертификата]] о том, как использовать эти поля.+В примере ниже поля Эмитент и Субъект заполнены - смотрите [[ru:​manual:​encryption:​using_certificates#​Ограничение_разрешенных_эмитента_и_субъекта_сертификата|Ограничение разрешенных Эмитента и Субъекта ​сертификата]] о том, как использовать эти поля.
  
 {{manual:​encryption:​agent_config.png}} {{manual:​encryption:​agent_config.png}}
-=== Ограничение разрешенных Эмитента и Темы сертификата ===+=== Ограничение разрешенных Эмитента и Субъекта ​сертификата ===
  
 Когда два компонента Zabbix (например,​ сервер и агент) устанавливают TLS соединение,​ они оба проверяют сертификаты друг друга. Когда два компонента Zabbix (например,​ сервер и агент) устанавливают TLS соединение,​ они оба проверяют сертификаты друг друга.
-Если сертификат узла подписан доверенным CA (с предустановленным сертификатом верхнего уровня в ''​TLSCAFile''​),​ является действительным,​ он не истёк и проходит некоторые другие проверки,​ тогда коммуникация может продолжаться. Эмитент и тема сертификата в этом простом случае не проверяется.+Если сертификат узла подписан доверенным CA (с предварительно подготовленным сертификатом верхнего уровня в ''​TLSCAFile''​),​ является действительным,​ он не истёк и проходит некоторые другие проверки,​ тогда коммуникация может продолжаться. Эмитент и субъект сертификата в этом простом случае не проверяется.
  
 Здесь имеется риск - кто-угодно при наличии действительного сертификата может выдавать себя за другого (например,​ сертификат хоста можно использовать,​ чтобы выдавать себя за сервер). Такое поведение может быть приемлемо в небольших средах,​ где сертификаты подписываются специализированного внутреннего CA и риск действий от чужого имени является минимальным. Здесь имеется риск - кто-угодно при наличии действительного сертификата может выдавать себя за другого (например,​ сертификат хоста можно использовать,​ чтобы выдавать себя за сервер). Такое поведение может быть приемлемо в небольших средах,​ где сертификаты подписываются специализированного внутреннего CA и риск действий от чужого имени является минимальным.
  
-Если ваш CA верхнего уровня используется для выдачи других сертификатов,​ которые не должны приниматься Zabbix или вы хотите снизить риск действий от чужого имени, вы можете ограничить разрешенные сертификаты,​ указав их строки Эмитента и Темы.+Если ваш CA верхнего уровня используется для выдачи других сертификатов,​ которые не должны приниматься Zabbix или вы хотите снизить риск действий от чужого имени, вы можете ограничить разрешенные сертификаты,​ указав их строки Эмитента и Субъекта.
  
 Например,​ вы можете записать в файл конфигурации Zabbix прокси:​ Например,​ вы можете записать в файл конфигурации Zabbix прокси:​
Line 218: Line 211:
   TLSServerCertSubject=CN=Zabbix server,​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 сервером с другими строками Эмитента и Темы в сертификате,​ пассивный прокси не пример запросы от такого сервера.+При наличии этих настроек активный прокси не будет разговаривать с Zabbix сервером с другими строками Эмитента и Субъекта ​в сертификате,​ пассивный прокси не пример запросы от такого сервера.
  
-Несколько заметок о соответствии строк Эмитента и Темы+Несколько заметок о соответствии строк Эмитента и Субъекта
-  - Строки Эмитента и Темы проверяются независимо. Обе строки опциональны. +  - Строки Эмитента и Субъекта ​проверяются независимо. Обе строки опциональны. 
-  - Допусттмы символы UTF-8.+  - Допустимы символы UTF-8.
   - Не указанная строка означает,​ что принимается любая строка.   - Не указанная строка означает,​ что принимается любая строка.
   - Строки сравниваются "​как-есть",​ они должны в точности быть такими же.   - Строки сравниваются "​как-есть",​ они должны в точности быть такими же.
Line 233: Line 226:
   - Требования [[http://​tools.ietf.org/​html/​rfc4517| RFC 4517 Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules]] и [[http://​tools.ietf.org/​html/​rfc4518|RFC 4518 Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation]] не поддерживаются по причине необходимого объема работы.   - Требования [[http://​tools.ietf.org/​html/​rfc4517| RFC 4517 Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules]] и [[http://​tools.ietf.org/​html/​rfc4518|RFC 4518 Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation]] не поддерживаются по причине необходимого объема работы.
  
-Очередность полей в Эмитента и Темы строках и форматирование очень важны! Zabbix следует [[http://​tools.ietf.org/​html/​rfc4514|RFC 4514]] рекомендации и использует "​обратный"​ порядок этих полей.+Очередность полей в Эмитента и Субъекта ​строках и форматирование очень важны! Zabbix следует [[http://​tools.ietf.org/​html/​rfc4514|RFC 4514]] рекомендации и использует "​обратный"​ порядок этих полей.
  
 Обратный порядок можно продемонстрировать в примере:​ Обратный порядок можно продемонстрировать в примере:​
   TLSServerCertIssuer=CN=Signing CA,​OU=Development group,​O=Zabbix SIA,​DC=zabbix,​DC=com   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+  TLSServerCertSubject=CN=Zabbix ​proxy,​OU=Development group,​O=Zabbix SIA,​DC=zabbix,​DC=com
  
 Обратите внимание,​ что он начинается с верхнего уровня (CN), переходит к среднему уровню (OU, O) и заканчивается полями верхнего уровня (DC). Обратите внимание,​ что он начинается с верхнего уровня (CN), переходит к среднему уровню (OU, O) и заканчивается полями верхнего уровня (DC).
  
-По умолчанию //OpenSSL// отображает поля Эмитента и Темы в "​нормальном"​ порядке,​ в зависимости от использованных дополнительных опций:+По умолчанию //OpenSSL// отображает поля Эмитента и Субъекта ​в "​нормальном"​ порядке,​ в зависимости от использованных дополнительных опций:
   $ openssl x509 -noout -in /​home/​zabbix/​zabbix_proxy.crt -issuer -subject   $ 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   issuer= /​DC=com/​DC=zabbix/​O=Zabbix SIA/​OU=Development group/​CN=Signing CA
Line 253: Line 246:
           Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix proxy           Subject: DC=com, DC=zabbix, O=Zabbix SIA, OU=Development group, CN=Zabbix proxy
  
-Здесь строки Эмитента и Темы начинаются с верхнего уровня (DC) и заканчиываются полем нижнего уровня (CN), пробелы и разделители полей зависят от используемых опций. Ни одно из этих значений не будет совпадать в Zabbix полях Эмитента и Темы !+Здесь строки Эмитента и Субъекта ​начинаются с верхнего уровня (DC) и заканчиываются полем нижнего уровня (CN), пробелы и разделители полей зависят от используемых опций. Ни одно из этих значений не будет совпадать в Zabbix полях Эмитента и Субъекта!
  
 <note important>​ <note important>​
-Для получения надлежащих строк Эмитента и Темы, допустмых в Zabbix, вызовите OpenSSL со специальными опциями ​"-nameopt esc_2253,​esc_ctrl,​utf8,​dump_nostr,​dump_unknown,​dump_der,​sep_comma_plus,​dn_rev,​sname":+Для получения надлежащих строк Эмитента и Субъекта, допустмых в Zabbix, вызовите OpenSSL со специальными опциями\\ ''​-nameopt esc_2253,​esc_ctrl,​utf8,​dump_nostr,​dump_unknown,​dump_der,​sep_comma_plus,​dn_rev,​sname''​:
 </​note>​ </​note>​
   $ 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   $ 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
Line 262: Line 255:
   subject= CN=Zabbix proxy,​OU=Development group,​O=Zabbix SIA,​DC=zabbix,​DC=com   subject= CN=Zabbix proxy,​OU=Development group,​O=Zabbix SIA,​DC=zabbix,​DC=com
  
-Теперь строки находятся в "обратном"​ порядке", поля разделены запятой,​ строки можно использовать в файлах конфигурации Zabbix и в веб-интерфейсе.+Теперь строковые поля ​находятся в обратном"​ порядке,​ поля разделены запятой,​ строки можно использовать в файлах конфигурации Zabbix и в веб-интерфейсе
 + 
 +=== Ограничения при использовании расширений X.509 v3 сертификатов === 
 + 
 +  * Расширение **Альтернативное имя субъекта (//​subjectAltName//​)**. \\ Альтернативные имена субъектов из //​subjectAltName//​ расширения (такие как IP адрес, e-mail адрес) не поддерживаются Zabbix. В Zabbix проверяется только значение поля "​Субъект"​ (смотри [[ru/​manual/​encryption/​using_certificates#​ограничение_разрешенных_эмитента_и_субъекта_сертификата|Ограничение разрешенных Эмитента и Субъекта сертификата]]). \\ Если сертификат использует //​subjectAltName//​ расширение,​ тогда результат зависит от конкретной комбинации наборов инструментов криптографии с которыми скомпилированы компоненты Zabbix (это расширение может работать,​ а может и не работать,​ Zabbix может отказаться принимать такие сертификаты от узлов). 
 +  * Расширение **Использование Расширенного Ключа**. \\ Если используется,​ то, как правило,​ необходимо указывать как //​clientAuth//​ (TLS WWW аутентификация клиента),​ так и  //​serverAuth//​ (TLS WWW аутентификация сервера). \\ Например,​ при пассивных проверках Zabbix агент выступает в роли TLS сервера,​ таким образом необходимо указать //​serverAuth//​ в сертификате агента. При активных проверках в сертификате агента необходимо задать //​clientAuth//​. \\ //GnuTLS// выводит предупреждение в случае нарушения использования ключа, но разрешает продолжение соединения. 
 +  * Расширение **Ограничения Имени**. \\ Не все наборы инструментов криптографии поддерживают его. Это расширение может помешать Zabbix в загрузке CA сертификатов,​ где этот раздел промаркирован как //​критический//​ (зависит от конкретного набора инструментов криптографии).
  
 === Списки отозванных сертификатов (CRL) === === Списки отозванных сертификатов (CRL) ===