인증서 사용

Zabbix v7.4번역일: 2026-09-09원본 보기

개요

Zabbix는 공인 또는 사내 인증 기관(CA)이 서명한 PEM 형식의 RSA 인증서를 사용할 수 있습니다.

인증서 검증은 사전에 설정된 CA 인증서를 기준으로 수행됩니다. 선택적으로 인증서 폐기 목록(CRL)을 사용할 수 있습니다.

각 Zabbix 구성 요소는 하나의 인증서만 설정할 수 있습니다.

내부 CA 구축 및 운영, 인증서 요청 생성 및 서명, 인증서 폐기에 대한 자세한 내용은 OpenSSL PKI Tutorial v2.0과 같은 튜토리얼을 참고하십시오.

인증서 확장을 신중히 고려하고 테스트하십시오. 자세한 내용은 X.509 v3 인증서 확장 사용 제한 사항을 참고하십시오.

인증서 설정 파라미터

Zabbix 구성 요소에서 인증서를 설정하기 위해 다음 설정 파라미터를 지원합니다.

파라미터 필수 여부 설명
TLSCAFile 예 피어 인증서 검증을 위한 최상위 CA 인증서가 포함된 파일의 전체 경로입니다.
여러 구성원을 가진 인증서 체인을 사용하는 경우, 하위 레벨 CA 인증서를 먼저, 이어서 상위 레벨 CA 인증서 순으로 정렬하십시오.
여러 CA의 인증서를 하나의 파일에 포함할 수 있습니다.
TLSCRLFile 아니요 인증서 폐기 목록(CRL)이 포함된 파일의 전체 경로입니다.
TLSCertFile 예 인증서가 포함된 파일의 전체 경로입니다.
여러 구성원을 가진 인증서 체인을 사용하는 경우, 서버, 프록시, 또는 에이전트 인증서를 먼저, 이어서 하위 레벨 CA 인증서, 마지막으로 상위 레벨 CA 인증서 순으로 정렬하십시오.
TLSKeyFile 예 개인 키가 포함된 파일의 전체 경로입니다.
적절한 접근 권한을 설정하여 이 파일이 Zabbix 사용자만 읽을 수 있도록 하십시오.
TLSServerCertIssuer 아니요 허용되는 서버 인증서 발급자입니다.
TLSServerCertSubject 아니요 허용되는 서버 인증서 주체입니다.

설정 예시

필요한 인증서를 준비한 후, Zabbix 구성 요소가 인증서 기반 암호화를 사용하도록 설정합니다.

아래는 다음 항목에 대한 상세 설정 단계입니다:

Zabbix server

1. CA 인증서 파일을 준비합니다.

피어 인증서를 검증하려면 Zabbix server가 최상위 자체 서명 루트 CA 인증서가 포함된 파일에 접근할 수 있어야 합니다. 예를 들어, 두 개의 독립된 루트 CA로부터 발급된 인증서가 필요한 경우, /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. Zabbix server 인증서/인증서 체인을 파일에 배치합니다. 예를 들어 /home/zabbix/zabbix_server.crt입니다. 첫 번째 인증서는 Zabbix server 인증서이며, 그 뒤에 중간 CA 인증서가 이어집니다:

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-----

인증서 검증 과정에 영향을 주지 않도록 클라이언트와 서버 인증서 모두 위에서 언급한 속성만 사용하십시오. 예를 들어, X509v3 Subject Alternative Name 또는 Netscape Cert Type 확장을 사용하면 OpenSSL이 암호화 연결을 수립하지 못할 수 있습니다. 자세한 내용은 X.509 v3 인증서 확장 사용 제한 사항을 참고하십시오.

3. Zabbix server 개인 키를 파일에 배치합니다. 예를 들어 /home/zabbix/zabbix_server.key입니다:

-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl
...
IJLkhbybBYEf47MLhffWa7XvZTY=
-----END PRIVATE KEY-----

4. Zabbix server 설정 파일에서 TLS 설정 파라미터를 편집합니다:

TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSCertFile=/home/zabbix/zabbix_server.crt
TLSKeyFile=/home/zabbix/zabbix_server.key
Zabbix proxy

1. Zabbix server 섹션에서 설명한 대로 최상위 CA 인증서, Zabbix proxy 인증서/인증서 체인, 개인 키가 포함된 파일을 준비합니다. 그런 다음 Zabbix proxy 설정 파일에서 TLSCAFile, TLSCertFile, TLSKeyFile 파라미터를 그에 맞게 편집합니다.

2. Zabbix proxy 설정 파일에서 추가 TLS 파라미터를 편집합니다:

  • 능동형 프록시: TLSConnect=cert
  • 수동형 프록시: TLSAccept=cert

프록시 보안을 강화하기 위해 TLSServerCertIssuer와 TLSServerCertSubject 파라미터를 설정할 수도 있습니다. 자세한 내용은 허용되는 인증서 발급자와 주체 제한을 참고하십시오.

최종 프록시 설정 파일의 TLS 파라미터는 다음과 같은 형태일 수 있습니다:

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. Zabbix 프론트엔드에서 이 프록시의 암호화를 설정합니다:

  • 이동: Administration → Proxies.
  • 프록시를 선택하고 Encryption 탭을 클릭합니다.

아래 예시에서는 Issuer와 Subject 필드가 채워져 있습니다. 이 필드를 사용하는 이유와 방법에 대한 자세한 내용은 허용되는 인증서 발급자와 주체 제한을 참고하십시오.

능동형 프록시의 경우:

수동형 프록시의 경우:

Zabbix agent

1. Zabbix server 섹션에서 설명한 대로 최상위 CA 인증서, Zabbix agent 인증서/인증서 체인, 개인 키가 포함된 파일을 준비합니다. 그런 다음 Zabbix agent 설정 파일에서 TLSCAFile, TLSCertFile, TLSKeyFile 파라미터를 그에 맞게 편집합니다.

2. Zabbix agent 설정 파일에서 추가 TLS 파라미터를 편집합니다:

  • 능동형 에이전트: TLSConnect=cert
  • 수동형 에이전트: TLSAccept=cert

에이전트 보안을 강화하기 위해 TLSServerCertIssuer와 TLSServerCertSubject 파라미터를 설정할 수 있습니다. 자세한 내용은 허용되는 인증서 발급자와 주체 제한을 참고하십시오.

최종 에이전트 설정 파일의 TLS 파라미터는 다음과 같은 형태일 수 있습니다. 이 예시는 호스트가 프록시에 의해 모니터링된다고 가정하므로, 인증서 Subject로 프록시가 지정된 점에 유의하십시오:

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. 이 에이전트가 모니터링하는 호스트에 대해 Zabbix 프론트엔드에서 암호화를 설정합니다.

  • 이동: Data collection → Hosts.
  • 호스트를 선택하고 Encryption 탭을 클릭합니다.

아래 예시에서는 Issuer와 Subject 필드가 채워져 있습니다. 이 필드를 사용하는 이유와 방법에 대한 자세한 내용은 허용되는 인증서 발급자와 주체 제한을 참고하십시오.

Zabbix web service

1. Zabbix server 섹션에서 설명한 대로 최상위 CA 인증서, Zabbix web service 인증서/인증서 체인, 개인 키가 포함된 파일을 준비합니다. 그런 다음 Zabbix web service 설정 파일에서 TLSCAFile, TLSCertFile, TLSKeyFile 파라미터를 그에 맞게 편집합니다.

2. Zabbix web service 설정 파일에서 추가 TLS 파라미터를 편집합니다: TLSAccept=cert

최종 web service 설정 파일의 TLS 파라미터는 다음과 같은 형태일 수 있습니다:

TLSAccept=cert
TLSCAFile=/home/zabbix/zabbix_ca_file.crt
TLSCertFile=/home/zabbix/zabbix_web_service.crt
TLSKeyFile=/home/zabbix/zabbix_web_service.key

3. Zabbix server 설정 파일에서 WebServiceURL 파라미터를 편집하여 Zabbix server가 TLS가 설정된 Zabbix web service에 연결하도록 설정합니다:

WebServiceURL=https://example.com:443/report

허용되는 인증서 발급자와 주체 제한

두 Zabbix 구성 요소(예: server와 agent)가 TLS 연결을 수립할 때, 서로의 인증서를 검증합니다. 피어 인증서가 신뢰할 수 있는 CA(TLSCAFile에 사전 설정된 최상위 인증서)에 의해 서명되었고, 유효하며, 만료되지 않았고, 기타 검사를 통과하면 구성 요소 간 통신이 진행될 수 있습니다. 이 가장 단순한 경우, 인증서 발급자와 주체는 검증되지 않습니다.

하지만 이는 위험을 내포합니다: 유효한 인증서를 가진 누구나 다른 누군가를 사칭할 수 있습니다(예를 들어, 호스트 인증서로 서버를 사칭할 수 있습니다). 전용 사내 CA가 인증서를 서명하고 사칭 위험이 낮은 소규모 환경에서는 이것이 허용될 수 있지만, 더 크거나 보안에 민감한 환경에서는 충분하지 않을 수 있습니다.

최상위 CA가 Zabbix에서 허용되지 않아야 할 인증서를 발급하거나, 사칭 위험을 줄이고 싶다면, 발급자와 주체를 지정하여 허용되는 인증서를 제한할 수 있습니다.

예를 들어, Zabbix proxy 설정 파일에서 다음과 같이 지정할 수 있습니다:

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 server와 통신하지 않습니다. 마찬가지로 수동형 프록시는 이러한 서버로부터의 요청을 수락하지 않습니다.

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의 organization(O) 문자열에 후행 공백이 있고 Subject의 organizational unit(OU) 문자열에 큰따옴표가 있는 경우, 이 문자들은 이스케이프해야 합니다:

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
필드 순서와 형식

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 문자열을 최상위 레벨에서 최하위 레벨 순서로 표시합니다. 다음 예시에서 Issuer와 Subject 필드는 최상위 레벨(DC)로 시작해 최하위 레벨(CN) 필드로 끝납니다. 또한 공백과 필드 구분자 형식은 사용된 옵션에 따라 달라지므로, 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

Zabbix에 맞게 Issuer와 Subject 문자열의 형식을 올바르게 지정하려면, 다음 옵션으로 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에서 X.509 v3 인증서를 사용할 때, 특정 확장은 완전히 지원되지 않거나 일관되지 않은 동작을 유발할 수 있습니다.

Subject Alternative Name 확장

Zabbix는 IP 주소나 이메일 주소와 같은 대체 DNS 이름을 지정하는 데 사용되는 Subject Alternative Name 확장을 지원하지 않습니다. Zabbix는 인증서의 Subject 필드 값만 검증할 수 있습니다(허용되는 인증서 발급자와 주체 제한 참고). 인증서에 subjectAltName 필드가 포함된 경우, 인증서 검증 결과는 Zabbix 구성 요소를 컴파일할 때 사용된 특정 암호화 툴킷에 따라 달라질 수 있습니다. 그 결과 Zabbix는 이러한 조합에 따라 인증서를 수락하거나 거부할 수 있습니다.

Extended Key Usage 확장

Zabbix는 Extended Key Usage 확장을 지원합니다. 다만 사용할 경우, 일반적으로 clientAuth(TLS WWW 클라이언트 인증용)와 serverAuth(TLS WWW 서버 인증용) 속성을 모두 지정해야 합니다. 예를 들어:

  • Zabbix agent가 TLS 서버로 동작하는 수동 체크에서는, 에이전트 인증서에 serverAuth 속성이 포함되어야 합니다.
  • 에이전트가 TLS 클라이언트로 동작하는 능동 체크의 경우, 에이전트 인증서에 clientAuth 속성이 포함되어야 합니다.

GnuTLS는 키 사용 위반에 대해 경고를 낼 수 있지만, 일반적으로 이러한 경고에도 불구하고 통신을 계속 진행하도록 허용합니다.

Name Constraints 확장

Name Constraints 확장에 대한 지원은 암호화 툴킷마다 다릅니다. 선택한 툴킷이 이 확장을 지원하는지 확인하십시오. 이 확장은 사용 중인 특정 툴킷에 따라, 이 섹션이 critical로 표시된 경우 Zabbix가 CA 인증서를 로드하는 것을 제한할 수 있습니다.

인증서 폐기 목록(CRL)

인증서가 손상된 경우, 인증 기관(CA)은 해당 인증서를 인증서 폐기 목록(CRL)에 포함시켜 폐기할 수 있습니다. CRL은 설정 파일을 통해 관리되며, server, proxy, agent 설정 파일의 TLSCRLFile 파라미터를 사용하여 지정할 수 있습니다. 예를 들어:

TLSCRLFile=/home/zabbix/zabbix_crl_file.crt

이 경우 zabbix_crl_file.crt는 여러 CA의 CRL을 포함할 수 있으며, 다음과 같은 형태일 수 있습니다:

-----BEGIN X509 CRL-----
MIIB/DCB5QIBATANBgkqhkiG9w0BAQUFADCBgTETMBEGCgmSJomT8ixkARkWA2Nv
...
treZeUPjb7LSmZ3K2hpbZN7SoOZcAoHQ3GWd9npuctg=
-----END X509 CRL-----
-----BEGIN X509 CRL-----
MIIB+TCB4gIBATANBgkqhkiG9w0BAQUFADB/MRMwEQYKCZImiZPyLGQBGRYDY29t
...
CAEebS2CND3ShBedZ8YSil59O6JvaDP61lR5lNs=
-----END X509 CRL-----

CRL 파일은 Zabbix가 시작될 때만 로드됩니다. CRL을 업데이트하려면 Zabbix를 재시작하십시오.

Zabbix 구성 요소가 OpenSSL로 컴파일되고 CRL을 사용하는 경우, 인증서 체인의 각 최상위 및 중간 CA에 대응하는 CRL(비어 있더라도)이 TLSCRLFile에 포함되어 있는지 확인하십시오.