ZabbixでOpenSSLを使ってSSL/TLS通信を設定する方法

目次

はじめに

「Zabbixの通信をSSL/TLSで暗号化したいけれど、OpenSSLで証明書をどう作ればいいの?」
「証明書を作成したあと、Zabbixのどこに設定すれば接続できるの?」と迷っていませんか。

Zabbixサーバーとエージェントの通信を暗号化しようとして設定ファイルを開いても、証明書や秘密鍵、CAなどの項目が並び、どのファイルを指定すればよいのか迷ってしまいますよね。

この記事では、OpenSSLを使った証明書の作成からZabbixへの設定、SSL/TLSで通信できているか確認する方法まで紹介します。

ZabbixでOpenSSLを使ったSSL/TLS通信を設定する方法は?

Zabbixで監視データを暗号化して送受信する場合は、Zabbix Server・Zabbix Proxy・Zabbix Agent間の通信にSSL/TLSを設定します。

まずはOpenSSLとZabbixのSSL/TLS通信の関係を整理し、それぞれの方式の違いを確認していきます。

ZabbixのSSL/TLS通信とOpenSSLの関係

ZabbixのSSL/TLS通信では、OpenSSLを使ってCA証明書やサーバー証明書、秘密鍵を作成・確認できます。

作成した証明書や秘密鍵をZabbix Server・Proxy・Agentに設定することで、TLSによる暗号化通信を構成できます。

また、証明書の有効期限や発行者を確認するときにもOpenSSLを利用できます。

証明書方式とPSK方式の違い

ZabbixのSSL/TLS通信には、証明書を使う方式と事前共有鍵(PSK)を使う方式があります。

証明書方式ではCA証明書や証明書、秘密鍵を用意してZabbixに設定します。

一方、PSK方式では証明書を用意せず、通信する双方にPSK識別子と事前共有鍵を設定して認証します。

ZabbixのSSL/TLS設定に必要な証明書と秘密鍵

Zabbixで証明書方式のSSL/TLS通信を設定するには、CA証明書・サーバー証明書・秘密鍵をそれぞれ正しく準備する必要があります。

ここでは、各ファイルの役割と、準備・保存するときに確認したいポイントを説明します。

CA証明書・サーバー証明書・秘密鍵の役割

CA証明書は、接続先の証明書が信頼できる認証局から発行されているか確認するために使います。

サーバー証明書は通信相手の身元を証明し、秘密鍵は証明書と組み合わせて自身を認証するために使用します。

秘密鍵は外部に漏れないよう、証明書とは分けて安全に管理しましょう。

証明書と秘密鍵を準備するときの注意点

証明書と秘密鍵は、Zabbixが正しく読み取れる保存先とファイル名に設定します。

特に秘密鍵は、Zabbix Server・Proxy・Agentの実行ユーザーだけが読み取れるよう権限を設定しておくと安心です。

また、証明書と秘密鍵が対応していないとTLS接続できないため、設定前にOpenSSLで組み合わせを確認しましょう。

OpenSSLでZabbix用の証明書を作成する方法

Zabbixで証明書方式のSSL/TLS通信を設定するには、OpenSSLを使って秘密鍵や証明書を用意します。

ここでは、OpenSSLの確認から証明書の作成、内容の確認まで順番に説明します。

OpenSSLがインストールされているか確認する

Zabbix用の証明書を作成する前に、LinuxサーバーでOpenSSLが利用できるか確認します。

ターミナルで openssl version を実行し、バージョン番号が表示されれば利用できます。

コマンドが見つからない場合は、Linuxのパッケージ管理機能からOpenSSLをインストールしましょう。

秘密鍵と証明書署名要求を作成する

秘密鍵とCSR(証明書署名要求)は、OpenSSLの req コマンドを使って作成します。

秘密鍵はZabbixから指定できる場所に保存し、外部へ漏れないよう安全に管理します。

認証局に証明書の発行を依頼する場合は、必要な情報を設定して作成したCSRを使用します。

自己署名証明書を作成する

自己署名証明書は、OpenSSLの req コマンドに -x509 を指定して作成できます。

有効期間は -days で設定でき、たとえば -days 365 なら365日間有効です。

作成した証明書と秘密鍵は、あとでZabbixのTLS設定に指定できるよう保存場所を確認しておきましょう。

自己署名証明書とCAから発行された証明書の違いが分からず、どちらを使うべきか迷う場合は、用途ごとの違いを確認しておきましょう。
▶自己署名証明書とは?CA証明書との違いや使い分けをわかりやすく解説

作成した証明書の内容を確認する

作成した証明書は、openssl x509 -in server.crt -text -noout などのコマンドで内容を確認できます。

有効期限や発行者、サブジェクトが想定した内容になっているか確認してから、ZabbixのTLS設定に使用しましょう。

ZabbixサーバーでSSL/TLSを設定する方法

Zabbix用の証明書と秘密鍵を作成したら、次にZabbixサーバー側へファイルを配置してSSL/TLS通信に使用する設定を行います。

ここでは、証明書の配置から設定項目の記述、再起動による反映まで順番に説明します。

証明書と秘密鍵を配置する

作成したCA証明書・サーバー証明書・秘密鍵は、Zabbix Serverが読み取れるディレクトリへ配置します。

配置後はファイル名とパスを確認し、Zabbix Serverの実行ユーザーが読み取れるよう権限を設定します。

特に秘密鍵は、不要なユーザーから読み取られないよう安全に管理しましょう。

TLSCAFile・TLSCertFile・TLSKeyFileを設定する

Zabbix Serverの設定ファイルで、CA証明書を TLSCAFileサーバー証明書を TLSCertFile秘密鍵を TLSKeyFile に指定します。

/etc/zabbix/ssl/ などに配置した場合は、それぞれ実際のファイル名を含むパスを記述します。

設定を保存する前に、指定したパスとファイル名に間違いがないか確認しましょう。

Zabbixサーバーを再起動して設定を反映する

設定ファイルを変更したら、Zabbix Serverを再起動してTLS設定を反映します。

再起動後はサービスが正常に動作しているか確認し、起動できない場合はログを確認します。

証明書や秘密鍵のパス、ファイルの権限などにエラーがないか順番に確認しましょう。

ZabbixエージェントとプロキシでSSL/TLSを設定する方法

Zabbixサーバー側の設定が完了したら、接続するZabbixエージェントやZabbixプロキシにもSSL/TLSの設定を行います。

ここでは、エージェント、プロキシ、Zabbix画面の順に設定と確認方法を説明します。

Zabbixエージェント側で証明書を設定する

Zabbix Agent側では、CA証明書・クライアント証明書・秘密鍵を配置し、設定ファイルにそれぞれのパスを指定します。

Zabbix Agent 2ではTLSCAFile、TLSCertFile、TLSKeyFile に使用するファイルを設定します。

実行ユーザーが各ファイルを読み取れることを確認したら、Agentを再起動して設定を反映しましょう。

Zabbixプロキシ側で証明書を設定する

Zabbix Proxy側でも、CA証明書・Proxy用の証明書・秘密鍵を配置し、TLSCAFile、TLSCertFile、TLSKeyFile にそれぞれのパスを指定します。

実行ユーザーが各ファイルを読み取れるよう権限を確認したら、Proxyを再起動します。

再起動後は、証明書を正常に読み込んで起動できているか確認しましょう。

Zabbix画面で暗号化方式を確認する

Zabbixの画面では、対象ホストの暗号化設定を開き、Agentとの接続に使用する方式を確認します。

証明書方式を利用する場合は、画面上の設定とServer・Proxy・Agent側のTLS設定が合っているか確認します。

設定が一致していないと接続できないため、それぞれの内容をそろえてから動作を確認しましょう。

OpenSSLでZabbixの証明書とSSL/TLS接続を確認する方法

Zabbixで証明書とSSL/TLSの設定を完了したら、証明書が正しく作成されているか、秘密鍵と組み合わせて使用できるかを確認します。

ここでは、OpenSSLを使った証明書の確認からSSL/TLS接続の確認まで順番に説明します。

証明書の有効期限や発行者を確認する

証明書の情報は、OpenSSLの x509 コマンドで確認できます。

openssl x509 -in server.crt -noout -dates -issuer -subject を実行すると、有効期限や発行者、サブジェクトなどが表示されます。

有効期限が切れていないことや、想定したCAから発行されていることを確認しましょう。

秘密鍵と証明書の組み合わせを確認する

RSA鍵の場合は、証明書と秘密鍵の情報を比較して正しい組み合わせか確認できます。

openssl x509 -in server.crt -noout -modulus | openssl sha256 と openssl rsa -in server.key -noout -modulus | openssl sha256 を実行し、ハッシュ値が一致するか確認します。

一致しない場合は、別の証明書や秘密鍵を指定していないか見直しましょう。

SSL/TLS接続が正常にできるか確認する

SSL/TLS接続は、OpenSSLの s_client コマンドを使って確認できます。

たとえば openssl s_client -connect example.com:443 -servername example.com を実行すると、証明書やTLSハンドシェイクの結果が表示されます。

エラーが出る場合は、証明書やCA証明書、接続先の設定を順番に確認しましょう。

ZabbixのOpenSSL設定で起こりやすいエラーと対処法

ZabbixでOpenSSLを使ったSSL/TLS通信を設定しても、証明書を読み込めなかったり、接続時に認証エラーが発生したりする場合があります。

ここでは、設定時に起こりやすいエラーを確認項目ごとに分けて、対処方法を説明します。

証明書・秘密鍵のパスや権限を確認する

証明書や秘密鍵を読み込めない場合は、Zabbixの設定に記述したパスと実際の保存場所を確認します。

ls -l /etc/zabbix/ssl/ などでファイルの存在や権限を確認し、Zabbixの実行ユーザーが読み取れる状態にします。

パスや権限を修正した場合は、サービスを再起動して設定を反映しましょう。

CA証明書の指定を確認する

CA証明書の検証エラーが出る場合は、TLSCAFile に正しいCA証明書が指定されているか確認します。

OpenSSLで発行者や証明書チェーンを確認し、通信相手の証明書を発行したCAと一致しているか確かめます。

異なる場合は正しいCA証明書へ変更し、Zabbixサービスを再起動しましょう。

証明書の名前と接続先が一致しているか確認する

証明書の名前に関するエラーが出る場合は、接続先のホスト名やIPアドレスが証明書のSANに含まれているか確認します。

openssl x509 -in server.crt -text -noout を実行すると、SANに登録された名前を確認できます。

一致していない場合は接続先を見直すか、正しい名前を含む証明書を用意しましょう。

SANにどのホスト名やIPアドレスを設定すればよいか分からない場合は、証明書のCNとの違いもあわせて確認しておくと安心です。
▶SSL証明書のSANとは?CNとの違いや確認方法をわかりやすく解説

Zabbix側と相手側の暗号化設定を確認する

TLS接続できない場合は、Zabbix Server・Proxy・Agentで暗号化方式が一致しているか確認します。

証明書方式を利用する場合は、通信する双方で必要な証明書や秘密鍵が設定されているか確認しましょう。

片側がPSK方式や暗号化なしになっている場合は、画面と設定ファイルの接続方式をそろえます。

まとめ

ZabbixでSSL/TLS通信を設定するときは、証明書を用意するだけでなく、Server・Proxy・Agentで同じ認証方式を使えるように設定をそろえることが大切です。

OpenSSLを活用すれば、証明書の作成から有効期限や内容の確認、接続テストまで行えるため、設定ミスも見つけやすくなります。

うまく接続できないときは一度に設定を変更せず、証明書のパスや権限、CA、暗号化方式などを順番に確認してみましょう。

それぞれの設定を一つずつ確かめていけば原因を絞り込みやすくなり、安全なTLS通信を構成しやすくなります。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次