TrueNAS Scale入坑指南No.5——mkcert自签名实现https访问内网IP
一、前言
为什么不用DDNS?
在我的NAS使用经历中比较长的一段时间都是在使用群晖,群晖自带了DDNS可以非常方便的穿透内网,实现异地访问。近两年使用TrueNAS Scale的时候,我也在docker中部署了实现DDNS功能的应用,但在公网上暴露大量服务端口其实是有很大风险的,因此我也一直在寻找其他的方案。
选择了什么?
最终在一次升级家庭网络设备的时候我选择了利用wireguard来实现内网穿透,相较于直接端口映射来说,wireguard的安全性无疑更加高一些。wireguard说到底还是一个VPN,将家庭网络和你使用的外部设备连接成一个局域网,设备间的访问都是使用的内网IP地址。
有什么问题?
其实局域网的情况下对https并没有什么需求,但某些docker应用在使用时要求必须使用https访问,因此我不得不寻求方法解决这个问题,最终找到了mkcert这个开源的小工具。
二、准备工作
1、下载并安装finalshell
下载链接自行度娘。
2、下载mkcert
GitHub中搜索“ FiloSottile/mkcert”
在Releases中下载适合自己平台的版本,我这里下载的是mkcert-v1.4.4-linux-amd64。
mkcert下载三、配置SSH服务
登录TrueNAS Scale,顺便看一下,地址栏中的小锁上有个叹号,说明还没有证书。
设置ssh登录现在要设置TrueNAS Sclae,使之能利用SSH工具登录。在页面左侧选择“系统设置”→“服务”
设置ssh登录把ssh后面的蓝色滑动按钮打开,如果你经常使用ssh的话可以勾选后面的方框,如果不需要,保持默认就行。最后点击最后一个像铅笔一样的图标,进入去修改设置。
设置ssh登录勾选“使用密码以root身份登录”,点击“保存”。
设置ssh登录因为之前的教程中我们一直没有为root用户设置密码,现在我们要到用户那里去设置下root用户的密码。
设置ssh登录点击root用户,下方会弹出编辑按钮,点击“编辑”按钮。
设置ssh登录取消“禁用密码”并设置新密码,将页面拉至最下方点击“保存”。
设置ssh登录四、FinalShell设置
回到电脑,打开下载并安装好的finalshell。先点1处按钮,在弹出的连接管理器中点2处的按钮,并选择“SSH链接(Linux)”
FinalShell设置在名称中填写自定义名称,主机中填写IP地址,用户名和密码对应的是TrueNAS Scale中的root用户和及其密码,配置完成后点击“确定”。
FinalShell设置在连接管理器或者FinalShell中双击刚才设置好的连接,登录到TrueNAS Scale后台。
FinalShell设置选择“接受并保存”
FinalShell设置现在就可以愉快的在TrueNAS Scale的后台玩耍了。
FinalShell设置五、生成证书
在左侧目录树中选择一个目录,可以是你的共享目录,把之前下载好的mkcert文件拖到这个目录里。这里我放到了/mnt/pool/software中。
在命令行中分别输入(#号后面为注释,不要复制)
cd /mnt/pool/software # 进入mkcert所在的目录
chmod 777 mkcert-v1.4.4-linux-amd64 # 更改mkcert文件的权限
./mkcert-v1.4.4-linux-amd64 -version # 执行一下,确保可以正常运行。
为服务器配置证书继续输入下方代码,生成服务器证书。
./mkcert-v1.4.4-linux-amd64 192.168.0.10
这时在当前目录下会生成两个文件,一个是“192.168.0.10.pem”,这个是证书文件;一个是“192.168.0.10+2.pem”,这个是证书密钥。如果没有看到这两个文件,点一下红色箭头处的刷新按钮。
为服务器配置证书选中这两个文件,点击右键,选择下载,FinalShell会自动把文件下载到桌面的fsdownload文件夹中。
为服务器配置证书我们虽然为TrueNAS Scale生成了证书,要让其他电脑能接受这个证书我们还需要生成一个认证机构的证书文件,并把这个文件安装到访问TrueNAS Scale的设备中。在命令行中,输入下面的命令:
./mkcert-v1.4.4-linux-amd64 -install
执行完这个命令后机构证书就生成了,但这个文件并不会出现在当前目录下,我们需要输入下一个命令查找机构证书的路径:
./mkcert-v1.4.4-linux-amd64 -CAROOT # 注意大小写
之后命令行中会输出机构证书的保存位置,我的是存放在/root/.local/share/mkcert中,去到这个目录,将机构证书“rootCA.pem”,密钥文件“rootCA-key.pem”下载。
为服务器配置证书六、使用证书
先为TrueNAS Scale配置并使用证书,登录TrueNAS Scale,在页面左侧选择“证书”→“证书”。
使用证书点击“添加”
使用证书证书名称中,按照规则自定义名称,类型修改为“导入证书”。
使用证书证书选项不需要设置,直接点击下一步。
使用证书“额外的约束”中需要填写证书和密钥,找到刚才给服务器生成的证书和密钥(以IP地址开头的那个),用记事本打开,把里面的内容复制到对应的位置。完成后点“下一步”。
使用证书保存设置
使用证书首页左侧选择“系统设置”→“常规”
使用证书点击GUI右侧的“设置”按钮
使用证书在“GUI SSL证书”中选择刚才自定义的证书
使用证书拉到最下方,点击“保存”
使用证书弹出的对话框中勾选“确认”,点击“继续”,完成服务器端的配置。
因为我们还没有配置访问设备的认证机构证书,接下来如果你在浏览器地址栏中输入https://192.168.0.10/,不同的浏览器会有不同的结果
edge和chrome:
使用证书firefox:
使用证书我们回到刚才下载证书的文件夹,找到认证机构证书:rootCA.pem,将其文件名修改为:rootCA.crt,然后双击,在弹出的对话框中选择“安装证书”
使用证书选择“本地计算机”(其实家用电脑只有一个用户的话选择“当前用户”也没有问题),点击下一步。
使用证书之后系统会弹出警告提示,不用理会,确认后继续。选择”将所有的证书都放入下列存储“,并点击旁边的浏览按钮。
使用证书选中”受信任的根证书颁发机构“,并点击确定。
使用证书退出后,点击下一步
使用证书最后点击完成
使用证书系统提示,导入成功,一路点确定退出,完成配置。
一般来讲这时候用https://192.168.0.10/就可以看到已经可以正常识别证书了。
使用证书但是有个别类型的浏览器还需要再手动导入一下。设置位置一般位于浏览器的设置选项中的隐私与安全中。
使用证书拉到“证书”所在位置,并打开查看证书。
使用证书选择“证书颁发机构”标签,并点击下方的“导入”按钮。
使用证书勾选信任,并点击确定。
使用证书退出后再次点击确定
使用证书好了,现在打开https://192.168.0.10/,应该就可以看到已经设置成功了
使用证书七、下期预告
既然我们已经可以给局域网IP添加自签名证书了,那么下一篇就来部署一个需要用https访问才能使用的应用——Vaultwarden,基本算是NAS必装的一个密码管理和自动填充工具。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

糖果CCC
校验提示文案
ThomasHu
校验提示文案
嘉然辣辣米
校验提示文案
糖果CCC
校验提示文案
嘉然辣辣米
校验提示文案
ThomasHu
校验提示文案