O Zabbix pode usar certificados RSA no formato PEM, assinados por uma autoridade certificadora (CA) pública ou interna.
A verificação do certificado é realizada em relação a um certificado CA pré-configurado. Opcionalmente, Listas de Revogação de Certificados (CRL) podem ser usadas.
Cada componente do Zabbix pode ter apenas um certificado configurado.
Para obter mais informações sobre como configurar e operar uma CA interna, gerar e assinar solicitações de certificado e revogar certificados, consulte tutoriais como o OpenSSL PKI Tutorial v2.0.
Considere e teste cuidadosamente suas extensões de certificado. Para mais detalhes, consulte Limitações no uso de extensões de certificado X.509 v3.
Os seguintes parâmetros de configuração são suportados para configurar certificados nos componentes do Zabbix.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
| TLSCAFile | sim | Caminho completo para um arquivo contendo os certificados da(s) CA(s) de nível superior para verificação do certificado do par. Se estiver usando uma cadeia de certificados com vários membros, ordene os certificados com os certificados da(s) CA(s) de nível inferior primeiro, seguidos pelos certificados da(s) CA(s) de nível superior. Certificados de várias CAs podem ser incluídos em um único arquivo. |
| TLSCRLFile | não | Caminho completo para um arquivo contendo Listas de Revogação de Certificados (CRL). |
| TLSCertFile | sim | Caminho completo para um arquivo contendo o certificado. Se estiver usando uma cadeia de certificados com vários membros, ordene os certificados com o certificado do server, proxy ou agent primeiro, seguido pelos certificados da(s) CA(s) de nível inferior e concluído pelos certificados da(s) CA(s) de nível superior. |
| TLSKeyFile | sim | Caminho completo para um arquivo contendo a chave privada. Certifique-se de que este arquivo seja legível apenas pelo usuário do Zabbix, definindo os direitos de acesso apropriados. |
| TLSServerCertIssuer | não | Emissor do certificado do server permitido. |
| TLSServerCertSubject | não | Assunto do certificado do server permitido. |
Após configurar os certificados necessários, configure os componentes do Zabbix para usar criptografia baseada em certificados.
Abaixo estão as etapas detalhadas para configurar:
1. Prepare o arquivo de certificado da CA.
Para verificar os certificados dos pares, o Zabbix server deve ter acesso ao arquivo que contém os certificados das CAs raiz autoassinadas de nível superior. Por exemplo, se forem necessários certificados de duas CAs raiz independentes, coloque-os em um arquivo em /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. Coloque o certificado/cadeia de certificados do Zabbix server em um arquivo, por exemplo, em /home/zabbix/zabbix_server.crt. O primeiro certificado é o certificado do Zabbix server, seguido pelo certificado da CA intermediária:
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-----Use apenas os atributos mencionados acima para os certificados de cliente e servidor para evitar afetar o processo de verificação do certificado. Por exemplo, o OpenSSL pode falhar ao estabelecer uma conexão criptografada se as extensões X509v3 Subject Alternative Name ou Netscape Cert Type forem usadas. Para mais informações, consulte Limitações no uso de extensões de certificado X.509 v3.
3. Coloque a chave privada do Zabbix server em um arquivo, por exemplo, em /home/zabbix/zabbix_server.key:
-----BEGIN PRIVATE KEY----- MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl ... IJLkhbybBYEf47MLhffWa7XvZTY= -----END PRIVATE KEY-----4. Edite os parâmetros de configuração TLS no arquivo de configuração do Zabbix server:
TLSCAFile=/home/zabbix/zabbix_ca_file TLSCertFile=/home/zabbix/zabbix_server.crt TLSKeyFile=/home/zabbix/zabbix_server.key1. Prepare os arquivos com os certificados CA de nível superior, o certificado/cadeia de certificados do proxy Zabbix e a chave privada conforme descrito na seção Servidor Zabbix. Em seguida, edite os parâmetros TLSCAFile, TLSCertFile e TLSKeyFile no arquivo de configuração do proxy Zabbix conforme necessário.
2. Edite os parâmetros TLS adicionais no arquivo de configuração do proxy Zabbix:
TLSConnect=certTLSAccept=certPara melhorar a segurança do proxy, você também pode definir os parâmetros TLSServerCertIssuer e TLSServerCertSubject. Para mais informações, consulte Restringindo emissor e assunto do certificado permitido.
Os parâmetros TLS no arquivo de configuração final do proxy podem ser semelhantes a:
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 server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSCertFile=/home/zabbix/zabbix_proxy.crt TLSKeyFile=/home/zabbix/zabbix_proxy.key3. Configure a criptografia para este proxy no frontend Zabbix:
Nos exemplos abaixo, os campos Emissor e Assunto estão preenchidos. Para mais informações sobre por que e como usar esses campos, consulte Restringindo emissor e assunto do certificado permitido.
Para proxy ativo:

Para proxy passivo:

1. Prepare os arquivos com os certificados CA de nível superior, o certificado/cadeia de certificados do agent Zabbix e a chave privada conforme descrito na seção Servidor Zabbix. Em seguida, edite os parâmetros TLSCAFile, TLSCertFile e TLSKeyFile no arquivo de configuração do agent Zabbix conforme necessário.
2. Edite os parâmetros TLS adicionais no arquivo de configuração do agent Zabbix:
TLSConnect=certTLSAccept=certPara melhorar a segurança do agent, você pode definir os parâmetros TLSServerCertIssuer e TLSServerCertSubject. Para mais informações, consulte Restringindo emissor e assunto do certificado permitido.
Os parâmetros TLS no arquivo de configuração final do agent podem ser semelhantes ao exemplo abaixo. Observe que o exemplo pressupõe que o host é monitorado por um proxy, portanto, ele é especificado como o Subject do certificado:
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.key3. Configure a criptografia no frontend Zabbix para o host monitorado por este agent.
No exemplo abaixo, os campos Emissor e Assunto estão preenchidos. Para mais informações sobre por que e como usar esses campos, consulte Restringindo emissor e assunto do certificado permitido.

1. Prepare os arquivos com os certificados CA de nível superior, o certificado/cadeia de certificados do Zabbix web service e a chave privada conforme descrito na seção Zabbix server. Em seguida, edite os parâmetros TLSCAFile, TLSCertFile e TLSKeyFile no arquivo de configuração do Zabbix web service conforme necessário.
2. Edite um parâmetro TLS adicional no arquivo de configuração do Zabbix web service: TLSAccept=cert
Os parâmetros TLS no arquivo de configuração final do web service podem ser semelhantes a:
TLSAccept=cert TLSCAFile=/home/zabbix/zabbix_ca_file TLSCertFile=/home/zabbix/zabbix_web_service.crt TLSKeyFile=/home/zabbix/zabbix_web_service.key3. Configure o Zabbix server para se conectar ao Zabbix web service configurado com TLS, editando o parâmetro WebServiceURL no arquivo de configuração do Zabbix server:
Quando dois componentes do Zabbix (por exemplo, server e agent) estabelecem uma conexão TLS, eles validam os certificados um do outro. Se um certificado de peer for assinado por uma CA confiável (com um certificado de nível superior pré-configurado em TLSCAFile), for válido, não tiver expirado e passar em outras verificações, a comunicação entre os componentes pode prosseguir. Nesse caso mais simples, o emissor e o assunto do certificado não são verificados.
No entanto, isso apresenta um risco: qualquer pessoa com um certificado válido pode se passar por qualquer outra (por exemplo, um certificado de host pode ser usado para se passar por um server). Embora isso possa ser aceitável em ambientes pequenos, onde os certificados são assinados por uma CA interna dedicada e o risco de personificação é baixo, pode não ser suficiente em ambientes maiores ou mais sensíveis à segurança.
Se sua CA de nível superior emitir certificados que não devem ser aceitos pelo Zabbix ou se você quiser reduzir o risco de personificação, pode restringir os certificados permitidos especificando seu emissor e assunto.
Por exemplo, no arquivo de configuração do proxy do Zabbix, você pode especificar:
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=comCom essas configurações, um proxy ativo não se comunicará com um server Zabbix cujo certificado tenha um emissor ou assunto diferente. Da mesma forma, um proxy passivo não aceitará solicitações de tal server.
Issuer e SubjectAs regras para correspondência de strings Issuer e Subject são as seguintes:
Issuer e Subject são verificadas independentemente. Ambas são opcionais.*) ou expressões regulares não são suportados.\', U+005C): "' (U+0022), '+' (U+002B), ',' (U+002C), ';' (U+003B), '<' (U+003C), '>' (U+003E), '\\' (U+005C);#', U+0023);Por exemplo, se as strings de organização (O) de Issuer e Subject contiverem espaços à direita e a string de unidade organizacional (OU) de Subject contiver aspas duplas, esses caracteres devem ser escapados:
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=comO Zabbix segue as recomendações da RFC 4514, que especifica uma ordem "reversa" para esses campos, começando pelos campos de nível mais baixo (CN), passando pelos campos de nível intermediário (OU, O) e concluindo com os campos de nível mais 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=comEm contraste, o OpenSSL por padrão exibe as strings Issuer e Subject na ordem do nível mais alto para o mais baixo. No exemplo a seguir, os campos Issuer e Subject começam com o campo de nível mais alto (DC) e terminam com o campo de nível mais baixo (CN). A formatação com espaços e separadores de campo também varia com base nas opções usadas e, portanto, não corresponderá ao formato exigido pelo 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 proxyPara formatar corretamente as strings Issuer e Subject para o Zabbix, invoque o OpenSSL com as seguintes opções:
$ 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.crtA saída estará então em ordem reversa, separada por vírgulas e utilizável nos arquivos de configuração do Zabbix e no 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=comAo implementar certificados X.509 v3 no Zabbix, certas extensões podem não ser totalmente suportadas ou podem resultar em comportamento inconsistente.
Extensão Subject Alternative Name
O Zabbix não suporta a extensão Subject Alternative Name, que é usada para especificar nomes DNS alternativos, como endereços IP ou endereços de e-mail. O Zabbix só pode validar o valor no campo Subject do certificado (consulte Restringindo o emissor e o assunto do certificado permitido). Se os certificados incluírem o campo subjectAltName, o resultado da validação do certificado pode variar dependendo dos toolkits criptográficos específicos usados para compilar os componentes do Zabbix. Como resultado, o Zabbix pode aceitar ou rejeitar certificados com base nessas combinações.
Extensão Extended Key Usage
O Zabbix suporta a extensão Extended Key Usage. No entanto, se usada, geralmente é necessário que ambos os atributos clientAuth (para autenticação de cliente TLS WWW) e serverAuth (para autenticação de servidor TLS WWW) sejam especificados. Por exemplo:
Embora o GnuTLS possa emitir um aviso para violações de uso de chave, normalmente permite que a comunicação prossiga apesar desses avisos.
Extensão Name Constraints
O suporte para a extensão Name Constraints varia entre os toolkits criptográficos. Certifique-se de que o toolkit escolhido suporte essa extensão. Essa extensão pode restringir o Zabbix de carregar certificados CA se esta seção for marcada como crítica, dependendo do toolkit específico em uso.
Se um certificado for comprometido, a Autoridade Certificadora (CA) pode revogá-lo incluindo o certificado em uma Lista de Revogação de Certificados (CRL). As CRLs são gerenciadas por meio de arquivos de configuração e podem ser especificadas usando o parâmetro TLSCRLFile nos arquivos de configuração do server, proxy e agent. Por exemplo:
Neste caso, zabbix_crl_file.crt pode conter CRLs de várias CAs e pode ser semelhante a isto:
-----BEGIN X509 CRL----- MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv ... treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg= -----END X509 CRL----- -----BEGIN X509 CRL----- MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t ... CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs= -----END X509 CRL-----O arquivo CRL é carregado apenas quando o Zabbix é iniciado. Para atualizar a CRL, reinicie o Zabbix.
Se os componentes do Zabbix forem compilados com OpenSSL e as CRLs forem usadas, certifique-se de que cada CA de nível superior e intermediária nas cadeias de certificados tenha uma CRL correspondente (mesmo que esteja vazia) incluída no TLSCRLFile.