Zabbix では、公開または社内CAによって署名されたPEM形式のRSA証明書を使用することができます。
証明書の検証は、事前に設定されたCA証明書と照合します。オプションとして、証明書リボケーションリスト(CRL)を
使用することができます。
各Zabbixコンポーネントに設定できる証明書は1つだけです。
内部CAの設定と操作方法、証明書要求の生成と署名方法、証明書の失効方法の詳細については、
[OpenSSL PKI Tutorial v1.1] (http://pki-tutorial.readthedocs.org/en/latest/) などのオンラインHowToを参照してください。
証明書の拡張を慎重に検討し、テストしてください。
Limitations on using X.509 v3 certificate extensions を参照してください。
| パラメータ | 必須 | 説明 |
|---|---|---|
| TLSCAFile | * | ピア証明書検証用の最上位 CA(s) 証明書を含むファイルのフル パス名。 複数のメンバーを持つ証明書チェーンの場合は、それらを順序付ける必要があります。最初に下位レベルの CA 証明書、次に上位レベルの CA(s) の証明書が続きます。 複数のCA(s)からの証明書を 1 つのファイルに纏めることができます。 |
| TLSCRLFile | 証明書失効リストを含むファイルのフル パス名。 証明書失効リスト (CRL) の注釈を参照してください。 | |
| TLSCertFile | * | 証明書 (証明書チェーン) を含むファイルのフル パス名。 複数のメンバーを持つ証明書チェーンの場合、最初にサーバー、プロキシ、またはエージェントの証明書、次に下位レベルの CA 証明書、次に上位レベルの CA(s)証明書の順に並べる必要があります。 |
| TLSKeyFile | * | 秘密鍵を含むファイルのフル パス名。このファイルはZabbix ユーザーだけが読み取れるようにアクセス権を設定する必要があります。 |
| TLSServerCertIssuer | 許可されたサーバー証明書の発行者。 | |
| TLSServerCertSubject | 許可されたサーバー証明書のサブジェクト。 | |
必要な証明書を設定したら、証明書ベースの暗号化を使用するようにZabbixコンポーネントを設定します。
設定手順の詳細は以下のとおりです。
1. 相手の証明書を検証するために、Zabbixサーバは相手のトップレベルの自己署名付きルートCA証明書のファイルに
アクセスする必要があります。例えば、2つの独立したルートCAからの証明書が必要な場合、これらの証明書を
以下のようにファイル /home/zabbix/zabbix_ca_file に格納します:
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サーバ証明書チェーンをファイル(例:/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-----ここでは、最初にZabbix server 証明書、その後に中間CA証明書を掲載しています。
3. Zabbix server の秘密鍵をファイル(例: /home/zabbix/zabbix_server.key) に格納します:
-----BEGIN PRIVATE KEY----- MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC9tIXIJoVnNXDl ... IJLkhbybBYEf47MLhffWa7XvZTY= -----END PRIVATE KEY-----4. Zabbixサーバ設定ファイルのTLSパラメータを以下のように編集してください:
TLSCAFile=/home/zabbix/zabbix_ca_file TLSCertFile=/home/zabbix/zabbix_server.crt TLSKeyFile=/home/zabbix/zabbix_server.key1. Zabbixサーバの証明書設定(/manual/encryption/using_certificates#configuring_certificate_on_zabbix_server)に従って、
トップレベルCA証明書、proxy 証明書(チェーン)、秘密鍵のファイルを準備します。
proxy 設定のパラメータ TLSCAFile、TLSCertFile、TLSKeyFile を適宜編集してください。
2. アクティブ proxy は、TLSConnect パラメータを編集してください:
パッシブ proxy では、TLSAccept パラメータを編集します:
3. これで最小限の証明書ベースのプロキシ設定ができました。TLSServerCertIssuer と TLSServerCertSubject パラメータを
設定して、プロキシのセキュリティを向上させることもできます (参照 Restricting allowed certificate Issuer and Subject).
4. 最終的なプロキシ設定ファイルでは、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 server,OU=Development group,O=Zabbix SIA,DC=zabbix,DC=com TLSCertFile=/home/zabbix/zabbix_proxy.crt TLSKeyFile=/home/zabbix/zabbix_proxy.key5. Zabbixフロントエンドでこの proxy の暗号化を設定します:
以下の例では、Issuer と Subject のフィールドに入力されています。
[Restricting allowed certificate Issuer and Subject] (/manual/encryption/using_certificates#restricting_allowed_certificate_issuer_and_subject) を参照してください。
これらのフィールドを使用する理由と方法について説明します。
アクティブ proxy

パッシブ proxy

1. トップレベルCA証明書、agent 証明書(チェーン)、秘密鍵のファイルを準備します。 Configuring certificate on Zabbix server の説明に従って、トップレベルのCA証明書(チェーン)と秘密鍵のファイルを準備します。
それに応じて、agent 設定のパラメータ TLSCAFile、TLSCertFile、TLSKeyFile を編集してください。
2. アクティブチェックのために、TLSConnectパラメータを編集してください:
パッシブチェックのためには、TLSAccept パラメータを編集してください:
3. これで、最小限の証明書ベースのエージェント設定ができました。TLSServerCertIssuer と TLSServerCertSubject
パラメータを設定することで、エージェントのセキュリティを向上させることができます。
(Restricting allowed certificate Issuer and Subject を参照してください).
4. 最終的なエージェント設定ファイルでは、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(この例では、proxy 経由でホストを監視しているため、proxy 証明書の Subject を想定しています)
5. Zabbixフロントエンドでこの agent の暗号化を設定します:
以下の例では、IssuerとSubjectフィールドが入力されています。
これらのフィールドを使用する理由と方法は、[Restricting allowed certificate Issuer and Subject (/manual/encryption/using_certificates#restricting_allowed_certificate_issuer_and_subject)を参照してください。

Zabbix サーバー セクションの説明に従って、最上位 CA 証明書、Zabbix Web サービスの証明書/証明書チェーン、および秘密鍵を含むファイルを準備します。 次に、Zabbix Web サービス設定ファイル の TLSCAFile、TLSCertFile、および TLSKeyFile パラメータを適宜編集します。
Zabbix Webサービス設定ファイル で、追加のTLSパラメータ TLSAccept=cert を編集します。
最終的なWebサービス設定ファイルのTLSパラメータは以下のようになります。
TLSAccept=cert TLSCAFile=/home/zabbix/zabbix_ca_file TLSCertFile=/home/zabbix/zabbix_web_service.crt TLSKeyFile=/home/zabbix/zabbix_web_service.key3. Zabbixサーバー設定ファイル の WebServiceURL パラメータを編集し、TLS設定されたZabbix Webサービスに接続するようにZabbixサーバーを設定します。
2 つの 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 文字列のフィールドの順序とフォーマットは重要です。 Zabbix は RFC4514 の推奨に従い、フィールドの"逆"順を使用します。
逆順例:
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低レベル (CN) で始まり、中レベル (OU、O) に進み、最上位 (DC) フィールドで終わることに注意してください。
OpenSSL では、使用する追加オプションに応じて、デフォルトで証明書の発行者フィールドとサブジェクト フィールドが"通常の"順序で表示されます。
$ 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ここで、発行者とサブジェクトの文字列はトップレベル (DC) で始まり、ローレベル (CN) フィールドで終わります。スペースとフィールド区切り文字は、使用するオプションによって異なります。 これらの値はいずれも、Zabbix 発行者フィールドとサブジェクト フィールドで一致しません!
Zabbix で使用できる適切な発行者と件名の文字列を取得するには、特別なオプションを指定して OpenSSL を呼び出します
-nameopt esc_2253,esc_ctrl,utf8,dump_nostr,dump_unknown,dump_der,sep_comma_plus,dn_rev,sname:
$ 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 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文字列フィールドが逆順になり、フィールドがカンマで区切られ、Zabbix 構成ファイルとフロントエンドで使用できるようになりました。
Issuer 文字列と Subject 文字列のマッチングルールIssuer 文字列と Subject 文字列のマッチングルールは次のとおりです。
Issuer 文字列と Subject 文字列はそれぞれ独立してチェックされます。どちらも省略可能です。*) や正規表現はサポートされていません。\、U+005C を使用)が必要な文字: "' (U+0022)、'+' (U+002B)、',' (U+002C)、';' (U+003B)、'<' (U+003C)、'>' (U+003E)、'\\' (U+005C);#'、U+0023);例えば、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=comZabbix は RFC 4514 の推奨事項に従います。この推奨事項では、これらのフィールドの順序を"reverse" に指定しています。つまり、最下位レベルのフィールド (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証明書が漏洩した場合、CAはCRLに記載することで証明書を失効させることができます。CRL は server 、proxy、agent の コンフィギュレーションファイルで TLSCRLFile というパラメータを使って設定することができます。 例えば、以下のようになります:
zabbix_crl_file には複数の 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コンポーネントがOpenSSLでコンパイルされ、CRLを使用する場合、証明書チェーンのトップレベル及び
中間レベルの各CAは、TLSCRLFileに対応するCRL(空でも可)を持つ必要があります。