内网实现 https 方案的问题

293 天前
 qinyui

最近用 n1 在局域网内搭建了个轻 nas ,整个架构现在是这样的:

https://imgur.com/a/i1zIMEK

但是现在访问是用 http://192.168.1.xxx 的方式,感觉不太安全,(因为局域网是合租公用的),所以想在现有基础上加上 https 传输更安全点

目前了解到的比较可行的方案是:解析一个二级域名,再申请个对应的 ssl 证书(非自签名证书),然后在局域网修改路由器的 hosts ,将域名转发到 n1 的 ip 上,这样在局域网内的所有设备都可以通过 https 加域名的方式访问 n1 并且不需要修改设备的 hosts 信息

但是现在问题是,主路由器是公用的并且不知道管理台密码,没法操作配置 hosts ,副路由器倒是我自己的但是配置 hosts 好像也没用

现在到这里卡住了,有什么办法解决吗?

3795 次点击
所在节点    路由器
43 条回复
zhujinliang
293 天前
我考虑过,申请一个泛域名证书不难,主要是内网设备很多,而且像交换机这种不能安装软件的,更新证书会比较麻烦
Blunt1991
293 天前
caddy+DNS 直接指向内网 IP
Jinnrry
293 天前
@qinyui 你流量都在内网,也就是和你合租跟你共用路由器交换机且他必须有路由器管理员密码且必须能够注入路由器固件的情况下可能可以监听你的流量。这也需要担心安不安全?
dvz
293 天前
caddy 或者 npm 反向代理
totoro625
293 天前
@Jinnrry #18 0.001%刚好遇上了一个搞安全的,肯定也是物理攻击
mithrilyue
293 天前
docker 的话 traefik+dns-challenge ,群晖之类的可以反代到 traefik,也可以 acme.sh+dns-challenge+dsm-deploy
教程都挺全的,配置起来很简单的。
Ariake265
293 天前
dns 解析到内网 IP 之后直接 caddy
qinyui
293 天前
@Jinnrry @totoro625 我能说我上一个合租室友就是搞运维的大佬吗?你还觉得概率低吗。。🥲
qinyui
293 天前
@wanghr64 没用过 caddy ,我用 nginx 也行吧
vmebeh
293 天前
都放在副路由器后面不就行了
SenLief
293 天前
内网自己签名就行
Jinnrry
293 天前
@qinyui 你真要是为了防室友的话,那你还不如像#30
说的,你自己再搞个子网,跟公用的网络隔开,做网络隔离岂不更安全,而且维护也简单很多。

你真硬要上 ssl 的话,像楼上那些说的搞反代,那不把服务暴露到公网了吗,那不反而增加了安全风险。

真要上 ssl 那你就域名解析指到内网,但是验证使用 dns 记录验证,不要用 http 验证。
libook
292 天前
我现在的方案是这样的:

使用 Let's Encrypt 的 DNS-01 challenge 申请证书,在 DNS 解析平台上填写相应的 TXT 记录,这样证书签发平台只需要去看你的域名的 DNS 解析记录就可以确定你是不是拥有这个域名。

DNS-01 challenge 可以看这个: https://letsencrypt.org/docs/challenge-types/#dns-01-challenge

然后使用 acme.h 获取/刷新证书,定了个每月执行的计划任务。

给每个服务分配一个二级域名,并解析到 NAS 的内网 IP 。

NAS 上的 Nginx 配置每个域名( host 指令)对应代理到的端口号,并加载证书提供 HTTPS 访问。
qinyui
292 天前
@Jinnrry @vmebeh

首先我那个 tplink 的好像不支持子网,没看到相关选项,我是无线桥接的,而且无线桥接的网络相比直接连原路由器网速会低点,这个我用笔记本测试过(连原来的 wifi 是 400Mbps ,连新的 wifi 是 200Mbps ),这样正常访问外网速度就降低了得不偿失呀

目前就是准备域名解析内网 ip 然后申请 ssl 证书用,不使用 http 验证什么意思?
qinyui
292 天前
@libook 我目前基本也准备这么弄了,不过 ssl 证书准备直接用腾讯云的了,一年免费的也不用怎么更换,Let's Encrypt 的配置着还麻烦
poopoopoopoo
292 天前
不如简单点 deny all allow XXXX
qinyui
292 天前
@poopoopoopoo 是个思路,就是所有终端得固定下 ip
benjaminliangcom
292 天前
不用改 host ,直接把 DNS 解析到 lan 地址,最好配合 nginix proxy manager/Traefik 自动化 acme
fsdrw08
292 天前
HTTPS 整个链条涉及到几个服务:
1 ,dns ,浏览器检验证书最重要的就是看域名,因此要先部署一个 DNS 服务器,我自己环境用的是 consul, 够轻量,也可用 freeipa,
2 ,CA, 即证书颁发机构,由于是内网,只能自己搭,可以用 step-ca, 或者 hashicorp 的 vault, 我目前用的是 step-ca, 但打算换到 vault ,因为 vault 支持的功能更多,也可以用 freeipa, 这个也有 ca 功能
3 ,证书签发,我建议使用内网 acme ,step-ca, vault, freeipa 都支持 acme
4, 反向代理,我用的是 traefik ,因为它支持 acme,能自动获取证书,还有 ui

如果想省心,可以部署 freeipa+traefik ,就能实现内网 HTTPS ,部署方式可以考虑 podman 容器化部署,为什么用 podman ?因为 podman 支持 k8s yaml 的方式部署,我写了些专用于 podman 的 helm chart, 包含了 freeipa, traefik, consul

https://github.com/fsdrw08/helm-charts/tree/e820377c669dc2665c4091d4a7ed838cca0a7cd0/charts
fsdrw08
292 天前
我看你这里还涉及到路由,也可以考虑用 vyos ,我现在这套内网 HTTPS 链条的所有服务都是部署在运行 vyos 的虚拟机上,可以使用 terraform 部署,参考 https://github.com/fsdrw08/SoloLab/tree/main/TerraformWorkShop/System/VyOS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012439

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX