当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

作者:精品下载站 日期:2024-12-14 06:37:52 浏览:15 分类:玩电脑

使用 Zabbix 监控网站 SSL/TLS 证书过期


SSL (TLS) 证书是现代基础设施的重要组成部分,因此管理员必须确保它们不会过期并按时续订。本文向您展示如何使用 Zabbix 监控您的网站是否有过期的 SSL 证书。

在 Zabbix 的早期版本中,要监视 SSL 证书的过期情况,您必须使用控制台脚本通过 UserParameter 将值传递给 Zabbix。 Zabbix Agent 2允许您使用内置的WebCertificate插件检查证书上的信息。本文将介绍在 Zabbix 中监控 SSL 证书过期的两种方法。

在 Zabbix 上使用 WebCertificate 插件检查 SSL 证书过期

Zabbix Agent 2包含一个内置的WebCertificate插件,可让您检查网站证书信息。检查主机上是否安装了该版本的代理:

$ zabbix_agent2 -V

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

您可以使用 WebCertificate 插件,使用 zabbix-get 命令直接从控制台获取有关站点证书的信息:

$ zabbix_get -s 127.0.0.1 -k web.certificate.get[a-d.site,443]

该命令应返回一个 JSON 对象,其中包含指定网站的证书属性。

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

Zabbix 中提供了内置模板“Zabbix agent 2 的网站证书”。用它来检查 TLS/SSL 证书到期日期。

  1. 转到配置 -> 主机并使用网站名称添加新主机;

  2. 创建一个新的主机组或选择一个现有的主机组;

  3. 通过Zabbix代理2分配模板网站证书

  4. 接口部分中指定 Zabbix 代理的 IP 地址或名称(在我们的示例中,

    127.0.0.1

    );

    [玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

  5. 然后进入选项卡,点击继承和宿主宏

  6. 在里面

    {$CERT.WEBSITE.HOSTNAME}

    宏,指定要检查其证书的网站的 DNS 名称;

    [玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

  7. 默认情况下,SSL 证书即将到期的警告将在到期日期前 7 天显示。您可以使用宏来增加该值

    {$CERT.EXPIRY.WARN}

    ;

  8. 如果网站使用 443 以外的 TLS/SSL 端口,您可以使用宏指定它

    {$CERT.WEBSITE.PORT}

    ;

  9. 保存设置。

现在,当站点的证书即将过期时,Zabbix 会向您发出警告。

在 Zabbix 中使用脚本监控 HTTPS 证书过期

您可以使用外部脚本来检索以前版本的 Zabbix 中的证书到期信息。 openssl 命令行工具允许您提取网站证书信息。

使用以下代码创建 bash 脚本文件 /usr/lib/zabbix/externalscripts/sslcert_expiration.sh

#!/bin/bash
data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`
ssldate=`date -d "${data}" '+%s'`
nowdate=`date '+%s'`
diff="$((${ssldate}-${nowdate}))"
echo $((${diff}/24/3600))

允许脚本运行:

$ sudo chmod +x /usr/lib/zabbix/externalscripts/sslcert_expiration.sh

此脚本返回证书到期前剩余的天数。检查脚本是否正常工作。

$ /usr/lib/zabbix/externalscripts/sslcert_expiration.sh a-d.site 443

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

该脚本返回该站点的证书在接下来的 79 天内有效。

现在,您必须允许 Zabbix Agent 使用 UserParameter 参数运行此自定义 bash 脚本。

$ sudo mcedit /etc/zabbix/zabbix_agent2.conf

添加 :

UserParameter=sslcertexpire[*],/usr/lib/zabbix/externalscripts/sslcert_expiration.sh $1 $2

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

使用 UserParameter 中的脚本,您还可以检查 Zabbix 中域的过期日期。

重新启动代理:

$ sudo service zabbix-agent2 restart

检查Zabbix代理是否可以通过新参数接收数据。您可以使用zabbix-get命令来测试代理的响应:

$ zabbix_get -s 127.0.0.1 -p 10050 -k sslcertexpire[a-d.site,443]

现在添加一个新模板 CheckSSLCertExpiration 来监控 Zabbix 中 HTTPS 证书的过期情况。

在 Items 选项卡中,添加一个参数

  • 名称:SSL 证书剩余有效期

    {$DOMAINNAME}
  • 类型:Zabbix代理

  • 钥匙:

    sslcertexpire[{$DOMAINNAME},{$SSL_PORT}]
  • 信息类型:数字(无符号)

  • 更新间隔:1d

  • 病史:90天

  • 趋势:365d

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

然后添加一个新的触发器:

  • 名称:SSL 证书

    {$DOMAINNAME}

    即将到期

  • 表达:

    last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])<20
  • 严重性:高

如果 SSL 证书到期时间不足 20 天,此触发器将生成警报。

您可以添加恢复触发参数:

Recovery expression: last(/CheckSSLCertExpiration/sslcertexpire[{$DOMAINNAME},{$SSL_PORT}])>20

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

现在,使用 Agent 接口类型为您的站点添加一个新主机到 Zabbix。

选项卡中,添加两个参数:服务器名称和要检查 SSL 证书的端口:

  • 宏:

    {$DOMAINNAME}
  • 价值:

    a-d.site

  • 宏:

    {$SSL_PORT}
  • 价值:

    443

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

将之前创建的 CheckSSLCertExpiration 模板分配给主机。

现在检查最新数据。 Zabbix 显示该网站的 SSL 证书将在 79 天后过期。

[玩转系统] 使用 Zabbix 监控网站 SSL/TLS 证书过期

要通知管理员 SSL 证书需要尽快续订,您可以启用电子邮件或消息通知。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯