1 인증서 사용
원본 보기1 인증서 사용
개요
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 프론트엔드에서 암호화를 구성합니다.
- 데이터 수집 → 호스트로 이동합니다.
- 호스트를 선택하고 암호화 탭을 클릭합니다.
아래 예시에서는 발급자와 주체 필드가 채워져 있습니다. 이 필드를 사용하는 이유와 방법에 대한 자세한 정보는 허용된 인증서 발급자 및 주체 제한을 참조하세요.

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 매개변수를 편집하여 TLS가 구성된 Zabbix web service에 연결하도록 Zabbix server를 구성합니다:
WebServiceURL=https://example.com:443/report
허용된 인증서 발급자와 주체 제한
두 개의 Zabbix 구성 요소(예: 서버와 에이전트)가 TLS 연결을 설정할 때, 서로의 인증서를 검증합니다.
피어 인증서가 신뢰할 수 있는 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 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 에이전트가 TLS 서버로 작동하는 패시브 체크에서는, 에이전트의 인증서에 serverAuth 속성이 포함되어야 합니다.
- 에이전트가 TLS 클라이언트로 작동하는 액티브 체크에서는, 에이전트의 인증서에 clientAuth 속성이 포함되어야 합니다.
GnuTLS는 키 사용 위반에 대해 경고를 발행할 수 있지만, 일반적으로 이러한 경고에도 불구하고 통신이 계속되도록 허용합니다.
Name Constraints 확장
Name Constraints 확장에 대한 지원은 암호화 툴킷마다 다릅니다. 선택한 툴킷이 이 확장을 지원하는지 확인하십시오. 이 확장은 사용 중인 특정 툴킷에 따라 이 섹션이 중요(critical)로 표시되어 있을 경우 Zabbix가 CA 인증서를 로드하는 것을 제한할 수 있습니다.
인증서 폐기 목록 (CRL)
인증서가 손상된 경우, 인증 기관(CA)은 해당 인증서를 인증서 폐기 목록(CRL)에 포함시켜 폐기할 수 있습니다.
CRL은 구성 파일을 통해 관리되며 서버, 프록시, 에이전트 구성 파일에서 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에 TLSCRLFile에 포함된 해당 CRL(비어 있더라도)이 있는지 확인하세요.