特定のポート(tcp)監視の通信暗号化に関しまして

zabbixエージェントインストール済みの監視対象ホストの通信が暗号化されており、通常のport監視 tcp.net.service(シンプルチェック)を実装すると
SSLハンドシェイクに失敗した旨のログ(アラート通知)が発生するため暗号化した通信による監視を実装したい状況です。

外部チェック機能などそのほかの方法で、監視対象ホスト側で発行されたCA証明書を利用した特定のポート監視は可能なのでしょうか。
可能であればその方法も合わせて教えて頂きたいと考えています。
(バージョンは4.0.7です。)

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー fripper の写真

私個人の環境ですが、rubyのスクリプトでクライアント証明書を添えたHTTPSリクエストを
出して通るかどうか‥といった感じでチェックした結果を、0/1 等といった感じで
OK/NG を意味するものとして返すスクリプトを、UserParameter のアイテムで
組み込んで利用したりしています
httpd 稼働サーバ上で「ローカルホスト宛の接続」としてのテストと
外部ネットワーク越しに「グローバル URL 経由での接続」としてのテスト等
別のサーバ上にも仕掛けるカタチにして、「ホスト上の単独サービスとしての監視」と
「ネットワークを介した外形監視」としての監視 として仕掛けて
障害発生箇所で、ある程度の切り分け(サービスが落ちたのかネットワークがおかしいのか)等も
確認できるようにしていたりします‥

あまりきれいなスクリプトではないですが、汎用的なコアの部分のみ

===抜粋
Net::HTTP.version_1_2
_http = Net::HTTP.new(@urlinfo['host'], @urlinfo['port'])
_http.open_timeout = TIMEOUT
_http.read_timeout = TIMEOUT
if @urlinfo['protocol'] == 'https' then
_http.use_ssl = true
_http.cert = OpenSSL::X509::Certificate.new(File.read(File.dirname(__FILE__) + '/crtfile.pem'))
_http.key = OpenSSL::PKey::RSA.new(File.read(File.dirname(__FILE__) + '/keyfile.pem'))
_http.verify_mode = OpenSSL::SSL::VERIFY_NONE
_http.verify_depth = 5
end
_request = Net::HTTP::Get.new(@urlinfo['path'])
_request.basic_auth(@urlinfo['user'], @urlinfo['pass']) if @urlinfo.has_key?('user') && @urlinfo.has_key?('pass')
timeout(TIMEOUT) do
_res_time = Benchmark.realtime {
_response = _http.start{|_httpobj|
_httpobj.request(_request)
}
}
end
==ここまで

ユーザー masasasa の写真

fripper さん
ご回答ありがとうございます。
rubyの知識がなく、また使える環境ではないのでLinuxコマンドなどを使用し実装できればと考えているのですが、
rubyを使用しなければ難しいものなのでしょうか?

ユーザー TNK の写真

Rubyである必要はありません。
どんな言語やコマンドの組み合わせでも可能です。
あなたが得意な言語やツールを使用すればよいと思います。

ユーザー masasasa の写真

TNKさん
コメントありがとうございます。
Ruby以外では具体的にどのような形で監視が可能か分かりますでしょうか?
どのようなシェルスクリプトになるかもイメージができていないためご教示いただけると幸いです。