内网服务SSL证书申请
前言
对于大部分Homelab爱好者(例如我本人),由于内网相对安全,所以内网的服务一般采取IP+HTTP明文地址访问已经满足安全需求。但在一些较大型内部网络也是需要SSL证书避免MITM攻击。为了进一步实践、完善Homelab,以及避免浏览器不停提示不安全连接,遂实践了一下内网SSL证书申请。
方案
一般内网SSL证书也可以采用自签的方式。自签的方案好处是时间可以比较长,坏处就是你需要每个访问的设备都分发RootCA,并且对于移动信任RootCA会比较麻烦。因此本文主要讨论是采用Let's encrypt申请证书。
内网域名配置
对于Openwrt,默认LocalDomain是lan。你可以通过xxx.lan访问服务器,xxx是DHCP中静态合约中主机名。你可以通过修改LocalServer和LocalDomain配置成internal.xxx.com作为你的内网域名。 后续就可以"主机名字.internal.xxx.com"访问
证书申请
对于没有公网IP的Homelab,可以用DNS的方式认证。Openwrt上有一个ACME的插件,可以结合CloudflareAPI自动完成证书申请工作。luci-app-acme、acme、acme-dnsapi这三个包。安装完之后按照文档,配置一下域名,记得申请泛域名证书*.xxxx.com这种。然后配置CF的TOKEN、ZONE_ID就可以。域名就申请internal.xxx.com和*.internal.xxx.com
证书分发
- 对于unix类系统,最方便还是用rsync,简单设置一下用户名密码、只读之类的。SFTP、SCP虽然也可以,但是涉及公钥、密码保存,而且还要新建用户区分权限,比较麻烦。FTP就算了,安全性太差,要配置好估计比较折腾。
- 对Windows系统目前的办法是直接onedrive同步。在nas中rsync路由器的证书,然后再同步到OneDrive。
其他
剩下的就是每个需要用的SSL证书的系统进行配置了。
- 例如OMV,有自动更新证书的脚本
- IncredibleBuild,验证证书更新
- 林外网上说Cloudflare提供的15年证书,其实是Cloudflare自签的,不能直接使用。主要是用于CF边缘节点回源用。CF也不提供边缘节点证书下载。
References