为飞牛OS基于FRP的内网穿透开启HTTPS加密
为飞牛OS基于FRP的内网穿透开启HTTPS加密
在家庭或小型办公环境中,NAS(网络附加存储)设备通常只在局域网内使用。但随着远程访问需求的增加,越来越多的用户希望通过公网访问NAS。然而,公网访问也带来了安全和隐私问题。本文将详细介绍如何为飞牛OS基于FRP的内网穿透开启HTTPS加密,以确保数据传输的安全性。
安全隐患
首先,几乎所有的教程在设置时都选的是TCP或HTTP,而没有选择HTTPS,这相当于让个人数据在网络上"裸奔"。其次,注册passnat后需要阅读用户协议,其中包含了重要的安全提示。例如,如果在NAS中保存了敏感照片或影音资源,没有加密的情况下,这些数据可能被监管系统扫描到,导致账号被封甚至面临法律风险。
因此,无论是为了防止被监管系统扫描个人隐私,还是防止被不法分子恶意抓包,加密都是非常重要的。
准备工作
查阅passnat官网文档可知,源站如果支持https,只需简单配置一下。对于飞牛OS用户来说,这是一个好消息,因为飞牛OS原生支持http和https。为了安全起见,建议在飞牛OS中开启强制https。
具体操作步骤如下:
- 进入【系统设置】
- 选择【安全性】
- 进入【端口设置】
- 点击【高级设置】
- 勾选【强制HTTPS连接】
- 建议同时勾选【重定向80与443端口】,这样可以更方便地使用域名访问。
生成证书
方法一:使用飞牛OS的证书(推荐)
安装飞牛OS时系统会自动生成一个证书,这个证书每个人都是不一样的,可以放心使用。
具体操作步骤如下:
- 进入【系统设置】
- 选择【安全性】
- 进入【证书】
- 选择【fnOS】
- 点击【下载】
注意: 下载的证书包含证书本身以及证书密钥,后续只用到证书,密钥文件一定要妥善保存,一旦泄露就等于把大门钥匙给了别人,建议用完就删。
方法二:自签名证书(适合喜欢折腾的人)
生成自签名根证书
- 安装openssl(Linux系统一般自带,Windows系统可以从官网下载)
- 打开命令行,进入openssl目录
- 生成根证书密钥:
openssl genrsa -out myca.key 2048
- 生成根证书:
openssl req -new -x509 -nodes -key myca.key -sha256 -days 730 -out myca.crt -subj "/C=CN/CN=My Root CA/O=MyRootCA"
生成服务器根证书
- 生成服务器密钥:
openssl genrsa -out server.key 2048
- 生成签署请求文件:
openssl req -new -sha256 -key server.key -subj "/C=CN/O=MyRootServer/OU=MyServer/CN=改成你的passnat域名" -out server.csr
- 设置证书扩展信息:
subjectAltName = @alt_names [alt_names] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = *.example.com IP.1 = 192.168.xxx.xxx
- 使用根证书签署服务器证书:
openssl x509 -req -in selfserver.csr -CA myca.crt -CAkey myca.key -CAcreateserial -out server.crt -days 365 -extfile ./123.txt
飞牛OS添加根证书
- 进入【系统设置】
- 选择【安全性】
- 进入【证书】
- 选择【新增证书】
- 描述随便填,比如我的证书
- 证书选择
server.crt
- 私钥选择
server.key
- 确认保存
至此,飞牛OS的所有设置全部完成。
添加根证书
无论你使用的是飞牛OS的证书还是自签名证书,方法都是一样的。
客户端添加证书
Windows设备添加自签名根证书
最简单的方法:
- 双击打开
myca.crt
(如果是从飞牛OS导出的证书,请选择对应的crt文件) - 点击【安装证书】
- 选择【当前用户】
- 选择【将所有证书都放入下列存储】
- 选择【受信任的根证书颁发机构】
- 完成
手机、平板等添加自签名根证书
不同手机可能不一样,一般是:
- 进入【系统设置】
- 选择【安全】
- 选择【加密与凭据】
- 选择【安装证书】
但是手机上的证书问题目前无解,因为安卓7.0及以上版本,用户安装的证书不会被系统当做可信证书,需要用ROOT权限安装才行。
passnat设置
主要设置如图(此处省略具体图片,但应包含在原文中)
更多细节以及飞牛OS相关配置请参考其他教程,本文不再赘述。
公网访问
完成以上设置,并且在飞牛OS中部署好frpc客户端以后你就可以进行公网访问了,域名就是passnat给你的那个域名,如果一切顺利的话你的浏览器不会弹出任何警告,点击证书也可以看到这就是我们签发的证书。
如果你直接在地址栏输入域名出现以下情形:
这是因为浏览器默认用http访问,解决方法很简单,就是指定使用https协议,在域名前加上 https://
,这样浏览器就会用https访问了。
遇到的问题
openssl下载速度慢
别问,懂的都懂,你要学会【上网】
windows下提示 Can’t open xxx, Permission denied
以管理员身份运行powershell
执行命令提示 Can’t load XXX/.rnd into RNG
Can't load /home/user/.rnd into RNG
random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/home/user/.rnd
在那个目录(比如我这里就需要在 /home/user/
)中生成一个 .rnd
随机文件即可
cd /home/user/
openssl rand -writerand .rnd
其实脸滚键盘随便输入一大堆乱起八糟的东西然后重命名成 .rnd
也行,这里只是需要一个随机的东西做种子确保安全性,这里需要“一大堆”乱七八糟的东西,至少要1KB以上吧
已添加证书,但是chrome打开仍然提示
此服务器无法证实它就是 XXXX - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接
其实就是本文的“设置证书扩展信息”章节
请参考https://www.cnblogs.com/bxmm/p/18583262
公网使用域名访问没问题了,但是局域网使用ip访问会提示不安全
网肯定会提示,因为我们的证书是针对域名签发的,而不是ip地址签发的。
解决方法很简单:
- 签证书时把局域网ip也加进去
- 忽略(家庭局域网嘛,自己家里的路由器能有什么问题呢?)
本文原文来自CSDN,作者:u013062709