nut(UPS)和 SSL 证书

nut(UPS)和 SSL 证书

今天我nut在我的 Ubuntu 服务器(Ubuntu 14.04 LTS)上安装了它。

$ uname -a
Linux boson 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

UPS 连接到另一台服务器(称为 neutron),因此我用nut-client它来监视 UPS 状态。

当我这样做时,我得到:sudo upsc [email protected]

Init SSL without certificate database
battery.charge: 15
battery.charge.low: 10
battery.charge.warning: 50
battery.date: not set
battery.mfr.date: 2012/11/27
:

输出的第一行让我感到疑惑。我在其他nut基于 Debian 的服务器上安装时没有看到过这种情况。

我该怎么做才能去掉那条线?

编辑:这个“初始化没有证书数据库的 SSL”特别烦人,因为它不是输出的一部分upsc,因此我无法grep将其输出。

编辑(2):澄清一下,(Synology) 服务器(直接与 UPS 通信)未设置 SSL 或证书。网络上的其他 (Debian/Raspbian) 客户端没有上述问题。没有安装 SSL 证书(据我所知)

find / |grep cert_db无论是在服务器还是客户端都没有结果。

答案1

您的问题是由于 nut 中的新 NSS 后端引起的,它是在 2.7.1 版中添加的(从 2.6.5 到 2.7.1 的变化)。客户端首先尝试使用 STARTTLS 命令联系 tcp/3943,并从 upsd 获取 ERR FEATURE-NOT-CONFIGURED,因此显示该警告。

进行此更改的理由是,您通过网络以明文形式传输密码,而开发人员添加了 SSL 证书支持来防止这种情况发生。毕竟,客户端很吵。

错误消息实际上来自客户端,但您无法使用 grep 将其排除,因为它来自错误输出(stderr)。

解决问题的最简单方法是正确地进行管道传输:

upsc [email protected] 2>&1 | grep -v '^Init SSL'

或者如果你只是使用输出的某些部分,例如 RRD 图表,而你的 cron 输出中出现了垃圾,只需添加2>&1这将是一条正常的线:

upsc [email protected] 2>&1 | grep 'battery.charge:' | awk ...

解决这个问题不太简单的方法是实际配置 SSL 证书和其余内容,如中所述10. 安全 NUT 注意事项 | 配置 SSL

答案2

(对于像我一样通过 Google 访问的人)

只需进行适当的输出重定向即可过滤掉警告消息:

upsc [email protected] > /dev/stdout 2> /dev/null

答案3

您必须强调证书数据库的位置,并通过编辑 upsd.conf 告知客户端将使用的证书和用于解密与您的(公共)密钥相关联的私钥的密码:

  1. CERTPATH /usr/local/ups/etc/cert_db
  2. CERTIDENT ‘证书名称’ ‘数据库密码’

相关内容