其实本来就是打算只在自宅的局域网里用的域名,虽说其实也没什么必要在局域网里开 HTTPS 吧。

NGINX 的配置就不说了,辣么简单。

虽说 iLO 的配置也没有难就是了。


并算不上 tl;dr 的 tl;dr 环节:

“管理” > “安全性”,“SSL 证书” > “自定义证书”,公用名 (CN) 填上 iLO 使用的域名,其他内容没关系,一定不要勾选“包含 iLO IP 地址”。

第一次点击“生成 CSR”按钮,iLO 会提示正在生成证书(但用不了十分钟那么久),过一会儿再进来点一次,把那串 Base64 字符串保存成文本文件。

然后在这个域名的 DNS 记录指向的那台主机上装好 certbot ,用下面的这条命令获取证书文件:

certbot certonly --csr ilo.pem -d ilo.example.com

最后把 size 最大的那个 pem 文件的内容贴进“导入证书”按钮弹出的对话框里确定就行了。

以后更新的时候不需要再生成 CSR 了,只要 90 天内用 certbot 生成一下就好。


这次不用折腾了

但是参考过的网页链接我忘了,贴一下参考过的东西吧

  • Let’s Encrypt 官网的 certbot 文档
  • python-hpilo-4.1 (其实根本用不上这玩意儿)
  • dehydrated

当然啦,你得把域名指向 iLO 的局域网地址。改系统 hosts 也行,我改的路由器的 dnsmasq 。

一个应该不太容易踩到的坑

看到很多人提到 iLO 生成的 CSR 无法被一些 CA 签发证书的事情,基本上是因为上面提到的“包含 iLO IP 地址”的问题。

这个是 iLO 2.50 版本的 bug ,似乎是即使没有勾选这个选项,生成的 CSR 里也依然包含了 IP 地址的内容。

因为 Let’s Encrypt 是识别这个字段但不允许存在的,而且又不能手动修改 CSR 的内容,所以要么降级 iLO 到 2.44 ,要么升级到 2.53 以上,来获取一个正常的 CSR 。

以上。