WEB監視_SSL connect errorについて

WEB監視で5つのURLを設定しているのですが、1つだけ以下エラーが発生し監視できません。
エラー内容:エラー: SSL connect error: Peer reports incompatible or unsupported protocol version.(ZabbixのWEB管理画面に表示されるエラーです。)

curlコマンドを試すと同エラーが発生しました。
調査するとcurlのバージョンアップが必要とのことだったので、バージョンアップを実施しcurlコマンドでは正常に動作することが確認できました。
curlバージョン情報
[root@zabbix ~]# curl --version
curl 7.37.0 (x86_64-unknown-linux-gnu) libcurl/7.37.0 OpenSSL/1.0.2k zlib/1.2.7 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz

ですがZabbixのWEB画面では変わらず同じエラーが発生している状況です。
Zabbixサービスの再起動、サーバの再起動もしました。

curlコマンドで確認できればZabbixのWEB監視もできると認識していたのですが違うのでしょうか?
原因と対応方法があればご教示お願いいたします。
-------------サーバー情報(zabbix共通)-------------
zabbixバージョン:3.0.9
サーバー:CentOS Linux release 7.0.1406 (Core)
----------------------------------------------------

コメント表示オプション

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

curlバージョン情報として記載頂いた情報を拝見すると、CentOS標
準のcurlではないのではないでしょうか。

標準であれば、CentOS 7.4.1708でも、

 curl-7.29.0-42.el7

であるようです。

実行されているcurlのパスをご確認ください。
また、zabbix_serverが使用するcurlのライブラリがその新しいバ
ージョンのcurlのライブラリを使用するようになっているかもご確
認ください。
Zabbixサーバーからはcurlコマンドを直接実行しているのではなく、
ライブラリを使用して呼び出しを行っています。

ユーザー fsk の写真

TNK様

ご教示いただきありがとうございます。

ライブラリを確認した結果、「curl-7.29.0-42.el7」のバージョンとなっていました。

そのためバージョンアップ前の状態に戻し再度対象のURLをcurlで確認すると、
オプション「-1(TSLバージョン1.xを使ってネゴシエーションを行う)」をつけると正常に接続できることができました。

WEB監視でTSLを指定して監視することはできるのでしょうか?

curlバージョン情報
[root@zabbix ~]# curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.28.4 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets

広瀬です

明示的に、TLSv1.0~1.2を許可しているサイトと、TLSv1.2しか受け付けない状態のWeb
サーバを立ち上げ、オレオレ証明を配置した状態で試しましたが、当方では特に問題はありませんでした。
どちらも正常に200を返します。

 ※念のため、正式なSSL証明でもテストしましたけど、何ら問題なし。

尚当方環境は
CentOS7.3
ZABBIX3.0.4

curl-7.29.0-35.el7.centos.x86_64
libcurl-7.29.0-35.el7.centos.x86_64
openssl-1.0.1e-60.el7.x86_64
openssl-libs-1.0.1e-60.el7.x86_64

ZBX-9879問題に近いように思えますが、liburlのTLS制御は修正されているはずなので、
他は、OpenSSL側かな・・・考えられるとすると。尚、ZABBIX3.2、3.4でも問題は無いです

ユーザー fsk の写真

広瀬様

ご回答ありがとうございます。
また、検証までしていただきありがとうございます。

対象サイトの設定状況が不明だったため以下のサイトを使用し証明書情報等を確認しました。
https://www.ssllabs.com/ssltest/index.html

結果として「TLS 1.2」しか許可していませんでした。
(監視ができるサイトはTLS1.0~1.2を許可しています。)

検証から上記設定でも問題ないとのことでしたが、
以下のURLに同じような事象の対応報告を見つけました。
https://www.miraclelinux.com/tech-blog/kr6fbj

これが原因かは不明ですが確認してみたいと思います。
ですが、サイトの文中に「Zabbixのコードを確認すると、このCURLOPT_SSLVERSIONはセットされていません。」と記載されているところで、
このZabbixのコード確認とはどこで見ればいいのでしょうか?
初歩的な質問かもしれませんがご教示お願いします。

ユーザー TNK の写真

参考にされた事象の情報は古い情報です。
CentOS 7も修正されていたと思いますので、OSの更新を行うことで
対応できるはずです。
# curl、libcurlだけではなくnss、openssl-libsなども

Zabbixのソースに関しては、

 ファイル:src/zabbix_server/httppoller/httptest.c

内の

 関数:process_httptest()

あたりになると思います。

広瀬です

ZBX-9879は本家側では未だ取り込まれていません。Ver4.0以降でFix予定だそうです。
但し、参考にされたMiracle社が出しているMIRACLE ZBX3.0.1-1以降は修正済みと
いう事です。

現時点の情報を総合すると、CentOS7.0である事が恐らく問題になってきそうです。
Kernel本体がというよりも、TNKさんも指摘されている通りOpenSSL,NSSあたりも
VerUPが必要でしょう。

 ※curlやlibcurlだけではSSL/TLS通信はできません。OpenSSL関連PKGが絶対的に関わってきます

初期VerのOSなので、結構不具合は多いハズですし脆弱性も多々ありますので、
OS自体のVerUPを行われる事をおすすめします。
少なくとも、CentOS7.2~7.4 x ZABBIX3.0~3.4のいずれかの組み合わせであっても
TLSv1.2のみの通信に問題は生じてはおりません。

ユーザー fsk の写真

TNK様、広瀬様

ご回答いただきありがとうございます。

CentOSのアップデートを行い、監視できることが確認できました。

【アップデート後バージョン】
CentOS Linux release 7.4.1708 (Core)

ご教示いただきありがとうございました。