为飞牛OS基于FRP的内网穿透开启HTTPS加密

news2025/2/11 9:44:45

前言

玩NAS的朋友应该有比较多只是在家庭局域网使用,比如日常看看电影、备份手机照片什么的,这属于家庭局域网的使用场景。
当然了,如果你经常出差,或者过年回家不想把NAS也背回去,或者是想上班摸鱼,或者是NAS搭建游戏服务器之类的能公网访问就很有必要了。
公网访问我自己也折腾过很久,俗话说的好上帝给你关上了一扇窗也会顺便把门给带上,我目前的情况是:申请公网IP——没门;使用IPv6——运营商不支持;向日葵——太贵;免费FRP——不稳定。
最近(2024年底)终于刷到一个便宜可靠的方案passnat,最低套餐只要6元每月50G流量,部署起来也比较简单,飞牛官网和passnat的官网(passnat.com)都有教程,B站也有不少视频教程,照着做就行。
我自己也试了一下,只花了不到2小时就弄好了,用起来也非常流畅,但是有个很严肃的问题那就是安全与隐私!而且安全与隐私问题也是所有教程中都没有提到的问题(也不知道这些做教程的人是怎么想的,不懂HTTPS的重要性?没有安全意识?还是压根不在乎安全?),今天这篇文章就进行重点讨论基于FRP的内网穿透的安全设置,并以passnat为例给出解决方案,本文不适用于已有公网ip及域名的使用情形。

安全隐患

首先第一个问题,几乎所有的教程在设置时都选的是TCP或HTTP,我几乎没看到选择HTTPS的,这就是摆明了让个人数据在网络上裸奔呀!!!
在这里插入图片描述
第二点,当你注册passnat以后就会看到用户协议(https://www.passnat.com/illegal/),我估计大多数人都没看吧?直接点击了下一步是不是?我们重点来看这几处
在这里插入图片描述
在这里插入图片描述
假设,我在NAS中保存了和老婆“亲热”的照片,后来我出差,想老婆了,公网访问NAS看了这些照片,如果没有加密,这些照片就有可能被监管系统扫描到,而且很有可能会被识别为H内容。也就是说,你可能只是在公网看了一眼老婆的照片,然后突然就被封了号,甚至可能会以传播XX内容被带走,真的是人在家中坐祸从天上来。
你肯定会在passnat官网上看到类似这样的通知,你也不想让自己的账号出现在这里吧?
在这里插入图片描述
另外一种场景,相信也是大家几乎都会遇到的场景,玩NAS的谁没有个千八百部的影音资源呢?敢问在座的各位,有多少人能保证自己的电影是买来的正版资源?假设我在公网访问这些电影,然后没有加密,然后又被监管系统扫描到,然后被识别为盗版侵权,然后又是人在家中坐祸从天上来。
所以说,无论是为了防止被监管系统扫描个人隐私,还是被不法分子恶意抓包,或者说是其他情形,加密都是非常重要的一件事情!
BTW:为什么我总是在说“监管系统”?可能你有过体会,或者从网上看过一些新闻,比如微信群聊封号,比如反诈APP,总之你明白我的意思吧。而且别忘了注册passnat是实名认证的。

准备工作

查阅passnat官网文档可知,源站如果支持https只要简单配置一下就行。
https://doc.passnat.com/docs/app/https?current=https

对于我们而言,这里的源站指的就是飞牛OS,正好飞牛OS原生支持http和https,假如说飞牛OS原生只支持http,配置起来会略微麻烦一点,不过网上有大量文章,这里不再赘述。

我为了安全,在飞牛OS开启强制https,当然我建议大家也都开启。
点击【系统设置】->【安全性】->【端口设置】->【高级设置】->勾选【强制HTTPS连接】,这里也建议勾选【重定向80与443端口】,这样做的好处是域名访问不用填端口号,更方便使用。
在这里插入图片描述

生成证书证书

方法一:使用飞牛OS的证书(推荐)

安装飞牛OS时系统会自动生成一个证书,这个证书每个人都是不一样的,可以放心使用。
在这里插入图片描述

【系统设置】->【安全性】->【证书】->【fnOS】->【下载】
注意:这里下载的证书包含证书本身以及证书密钥,后续我们要用到证书,不会用到密钥,但密钥文件一定要妥善保存,一旦泄露就等于你把家里大门的钥匙给了别人,建议用完就删,装了360的话就右键选择文件粉碎。
我们要做的就是下载这个证书然后添加到你的电脑上,具体方法请直接阅读【添加根证书】章节。

方法二:自签名证书(适合喜欢折腾的人)

首先是准备工作,安装openssl。linux系统一般自带,没有就去安装,具体怎么装自己想(你都用linux了还不懂怎么安装吗?)
windows系统如果你装过git,或一些安全软件,那么大概率这些软件的安装目录下就有个openssl可以直接用。没有的去官网下载并安装(https://slproweb.com/products/Win32OpenSSL.html),一般人选择Win64 OpenSSL Light这种就好了,exe或msi都无所谓,反正都能用,Light的这是轻量版,足够我们生成一个自签名证书了。
知道如何安装并设置环境变量的话,自己去设置,这样用起来会比较方便,不懂什么是环境变量就按我说的做。

找到openssl.exe所在的目录,例如我的是C:\Program Files\OpenSSL-Win64\bin,在空白处按住shift点击右键,选择【在此处打开powershell窗口】
在这里插入图片描述

或者按win+r,输入powershell,命令行中输入cd openssl的安装目录,带空格的目录记得加引号,例如cd "C:\Program Files\OpenSSL-Win64\bin"

以下内容中的所有命令都以linux系统为例,windows请自行将命令中的openssl替换为openssl.exe
命令只讲关键参数,其他参数请搜索或询问AI。

生成自签名根证书

生成跟证书密钥

这个文件一定要妥善保存,一旦泄露就等于你把家里大门的钥匙给了别人
openssl genrsa -out myca.key 2048
genrsa: 生成RSA密钥对的子命令
-out selfca.key: 指定输出的私钥文件名为selfca.key
2048: 指定RSA密钥长度为2048位,这是目前推荐的安全密钥长度

生成根证书

openssl req -new -x509 -nodes -key myca.key -sha256 -days 730 -out myca.crt -subj "/C=CN/CN=My Root CA/O=MyRootCA"
req: 表示生成证书请求或证书
-new: 生成新的证书请求
-x509: 生成自签名证书而不是证书请求
-nodes: 不加密私钥(no DES)
-key selfca.key: 指定使用的私钥文件,也就是上一步生成的文件
-sha256: 使用SHA256算法签名
-days 365: 证书有效期为365天,建议久一点,否则过期了就要重新签发证书
-out ca.crt: 输出证书文件名为ca.crt

证书主体信息(-subj参数):
/C=CN: 国家代码为中国
/CN=My Root CA: 通用名称为"My Root CA",这里随便改,起个你的名字
/O=MyRootCA: 组织名称为"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
req: 处理证书签名请求
-new: 生成新的证书签名请求
-sha256: 使用SHA-256算法进行签名
-key server.key: 指定私钥文件,即上一步生成的文件
-subj: 设置证书主题信息,包含以下字段:
/C=CN: 国家代码(Country)为中国
/O=MyRootServer: 组织名称(Organization),这里随便改,起个你的名字
/OU=MyServer: 组织单位(Organization Unit),这里随便改,起个你的名字
/CN=XXXX: 通用名称(Common Name),通常是域名,这里改成你的passnat域名,例如myfnos.passnat.cc
-out selfserver.csr: 输出的CSR文件名

设置证书扩展信息

在当前目录随便新建个文件,比如123.txt
填写以下内容

subjectAltName = @alt_names
[alt_names]
DNS.1 = www.example.com
DNS.2 = example.com
DNS.3 = *.example.com
IP.1 = 192.168.xxx.xxx

这个文件的配置内容有很多,这里只列举最重要的几个内容,更多内容请搜索:如何生成带有SAN(subjectAltName)的证书
DNS.1, DNS.2, …: 指定域名,替换成你的passnat域名,例如myfnos.passnat.cc,如果有多个域名或者泛域名,序号累加接着往后填,对我们而言填1个就够了
IP.1, IP.2, …: 指定IP地址,一般是为了局域网内使用,需要的话也可以加,记得路由器里面给你的nas设置固定ip

使用根证书签署服务器证书

openssl x509 -req -in selfserver.csr -CA myca.crt -CAkey myca.key -CAcreateserial -out server.crt -days 365 -extfile ./123.txt
x509: 表示使用X.509证书标准
-req: 表示处理证书签名请求(CSR)
-in selfserver.csr: 输入文件是名为selfserver.csr的证书签名请求文件,也就是上一步生成的文件
-CA selfca.crt: 指定用于签名的CA证书,即【生成根证书】步骤中生成的文件
-CAkey selfca.key: 指定CA的私钥文件,即【生成跟证书密钥】步骤中生成的文件
-CAcreateserial: 创建CA证书的序列号文件(如果不存在)
-out selfserver.crt: 输出生成的服务器证书到selfserver.crt文件
-days 365: 设置证书的有效期为365天,需要小于等于根证书的有效期
-extfile 123.txt: 指定证书的扩展信息,即上一步的文件

至此所有需要的文件生成完毕,你需要保留的文件有
myca.key, myca.crt, server.key, server.crt,其余的都可以删除了,再次强调,两个key文件需要妥善保存,这相当于你家大门的钥匙。

飞牛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地址签发的。
解决方法很简单:1.签证书时把局域网ip也加进去;2.忽略(家庭局域网嘛,自己家里的路由器能有什么问题呢?)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《基于Python与DashScope的智能语音合成工具开发》

《基于Python与DashScope的智能语音合成工具开发》 在当今数字化时代,语音合成技术已经广泛应用于各种场景,如智能语音助手、有声读物、导航系统等。本文将介绍如何使用Python和DashScope平台开发一个简单而功能强大的文字转语音工具。通过这个工具&…

快速上手Vim的使用

Vim Linux编辑器-vim使用命令行模式下所有选项都可以带数字底行模式可视块模式(ctrlV进入) Linux编辑器-vim使用 Vim有多种模式的编辑器。能帮助我们很快的进行代码的编辑,甚至完成很多其他事情。 默认情况下我们打开vim在命令模式下&#x…

vue学习第四天 v-on事件绑定

v-on绑定事件如下,点击按钮会弹出alert v-on:事件具体名称“事件调用的函数名” 事件调用的函数写在methods里面 在methods属性的函数里,可以用this获取data的数据,this代表的就是整个vue实例 用this.age就可以拿到age&#xff0…

2.8寒假作业

web:[HNCTF 2022 Week1]2048 之前也做过类似的题目,之前的解法是直接get传参score20000,可以尝试 打开环境看源代码,直接改源代码显然是不行的,那么用一下上面的办法也不行,估计是要改其他方向的&#xff…

Formality:时序变换(五)(寄存器复制)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一、引言 时序变换在Design Compiler的首次综合和增量综合中都可能发生,它们包括:时钟门控(Clock Gating)、寄存器合并(Register Merging)、…

科技赋能数字内容体验的核心技术探索

内容概要 在数字化时代,科技的迅猛发展为我们的生活和工作带来了深刻的变革。数字内容体验已经成为人们获取信息和娱乐的重要途径,而这背后的技术支持则扮演着至关重要的角色。尤其是在人工智能、虚拟现实和区块链等新兴技术的推动下,数字内…

DeepSeek-R1 本地大模型搭建对接API

DeepSeek-R1 在这里将学到很多知识 欢迎使用使用DeepSeek-R1本地大模型DeepSeek 的模型基础说明DeepSeek的本地 API 说明DeepSeek 本地模型搭建1、执行命令安装及测试 DeepSeek-R1 API接口调用当然,我们为了让用户更加便捷,我们把API 接口全部放到上面截…

redis高级数据结构布隆过滤器

文章目录 背景什么是布隆过滤器Redis 中的布隆过滤器布隆过滤器使用注意事项实现原理空间占用估计 背景 我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。问题来了,新闻…

《Wiki.js知识库部署实践 + CNB Git数据同步方案解析》

一、wiki.js 知识库简介 基本概述 定义 :Wiki.js 是一个开源、现代、轻量且功能强大的 Wiki 应用程序,基于 Node.js 构建,旨在帮助个人和团队轻松创建、管理和共享知识。开源性质 :它遵循 AGPLv3 许可证,任何人都可以…

CSS Overflow 属性详解:控制内容溢出的利器

在前端开发中,处理内容溢出是一个常见的需求。CSS 提供了 overflow 属性,帮助我们控制当内容超出元素框时的显示方式。本文将详细介绍 overflow 属性的各种取值及其应用场景。 1. 什么是 overflow 属性? overflow 属性用于控制当元素的内容…

根文件系统 Debian10【1】移植

1.开发背景 一般根文件系统使用 Busybox 或者是 Buildroot 构建,这样构建出来的文件系统比较小,但是不具备上网功能,扩展性比较差。随着 ARM 的日益强大,ARM 可以搭载更庞大复杂的系统,可以是 Ubuntu 或者 Debian 等发…

【PyQt】实现格式刷功能

实现格式刷功能 在Qt Designer中直接实现格式刷功能并不支持,但可以通过以下方法在应用程序中实现类似功能: 一、Qt Designer中的替代方案 1.手动设置样式表 在属性编辑器中复制样式表(QSS)内容,粘贴到其他控件。 …

2025年日祭

本文将同步发表于洛谷(暂无法访问)、CSDN 与 Github 个人博客(暂未发布) 本蒟自2025.2.8开始半停课。 任务计划(站外题与专题) 数了一下,通过人数比较高的题,也就是我准备补的题&a…

Windows下AMD显卡在本地运行大语言模型(deepseek-r1)

Windows下AMD显卡在本地运行大语言模型 本人电脑配置第一步先在官网确认自己的 AMD 显卡是否支持 ROCm下载Ollama安装程序模型下载位置更改下载 ROCmLibs先确认自己显卡的gfx型号下载解压 替换替换rocblas.dll替换library文件夹下的所有 重启Ollama下载模型运行效果 本人电脑配…

el-table表格点击单元格实现编辑

使用 el-table 和 el-table-column 创建表格。在单元格的默认插槽中,使用 div 显示文本内容,单击时触发编辑功能。使用 el-input 组件在单元格中显示编辑框。data() 方法中定义了 tableData,tabClickIndex: null,tabClickLabel: ,用于判断是否…

数据库操作与数据管理——Rust 与 SQLite 的集成

第六章:数据库操作与数据管理 第一节:Rust 与 SQLite 的集成 在本节中,我们将深入探讨如何在 Rust 中使用 SQLite 数据库,涵盖从基本的 CRUD 操作到事务处理、数据模型的构建、性能优化以及安全性考虑等方面。SQLite 是一个轻量…

Ubuntu 24.10 安装Deepseek(Ollama+openwebui)

一、Ollama安装 1.在线安装 curl -fsSL https://ollama.com/install.sh | sh 如果curl工具没有安装先执行如下命令 sudo apt install curl 验证curl是否安装成功 curl --version 安装的过程中会提示输入当前系统登录用户的密码。 安装提示success后,验证安装 ollama -…

【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)

偏差和方差的权衡(Bias-Variance Tradeoff) 1. 引言 在机器学习模型的训练过程中,我们常常面临一个重要的挑战:如何平衡 偏差(Bias) 和 方差(Variance),以提升模型的泛…

STM32的HAL库开发---高级定时器---输出比较模式实验

一、高级定时器输出比较模式实验原理 定时器的输出比较模式总共有8种,本文使用其中的翻转模式,当TIMXCCR1TIMXCNT时,翻转OC1REF的电平,OC1REF为输出参考信号,高电平有效,OC1REF信号连接到0C1上面&#xff…

[论文阅读] Knowledge Fusion of Large Language Models

Knowledge Fusion of Large Language Models (FuseLLM) Methodology 整体Pipeline如下图所示 不同的动物代表不同的LLM。左边第一,第二分别是Ensemble以及Weight Merging方法。最右侧为本文提出的FuseLLM。 Ensemble: 融合多个models的预测结果,比如…