打算架设一个局域网 https 调试服务,征求建议

20 小时 2 分钟前
 Leon6868

动机

最近在开发 WebRTC 服务,但是浏览器只允许本机 ip 和 https 域名开启 WebRTC 服务,因此难以在局域网内进行真机调试。

如果有个本地 https 调试服务就好了,但是自己生成证书安装很麻烦,而且不适用于移动端。

所以就想,如果搭建一个能解析到任意本地地址的 https 域名服务,也许能帮助到与我有同样困境的人(也许有吧!)

实现

域名方面,打算注册一个域名(如 localhttps.top 或者 httpsdns.top ),有无更好的域名建议?

局域网 IP 段主要有以下网段:

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

楼主认为可行的操作形式是:

  1. 用户首先通过 cli 或者网页登记,然后得到 usr 识别码和 *.usr.localhttps.top 的泛域名证书(识别码是为了预防潜在的滥用行为)。
  2. 用户访问 xxx-xxx-xxx-xxx.usr.localhttps.top,DNS 服务器将自动解析到对应的局域网 IP ,如 xxx.xxx.xxx.xxx

将所有局域网 IP 段填充到 DNS 解析中并不现实,因此想到了两种解决方案:

  1. 通过 namesilo 的 DNS API 实时登记请求解析的 IP 。
  2. 搭建自己的 NameServer (如 ns1.localhttps.top),实现自动解析和权鉴。

手动管理证书是及其不健康的,楼主的主要工作语言是 Python 和 NodeJS ,计划开发能自动下载证书、提供证书、维护证书的包。

疑问

  1. 是否有更好的方法?
  2. 请问这套流程是否可行?
  3. 如果可行,这套流程是否有安全漏洞?

最重要的,大家认为这套系统有必要存在吗?

欢迎任何建议!

2271 次点击
所在节点    程序员
44 条回复
fuzzsh
16 小时 0 分钟前
realpg
15 小时 55 分钟前
改 Host 表,自签 10 年/20 年证书,通用性最强还简单
生成一次证书能用十年以上,有啥麻烦的
移动端安装个证书信任 用邮箱就行 很简单 ios android 都傻瓜操作
xiangyuecn
14 小时 12 分钟前
最简单的就是用自己的正式域名,直接分配个本地开发子域名,使用正式的证书,手机上也能正常使用

自签证书,那是十年前的事了,记得 Android 里面的浏览器早就不信任用户导入的根证书了,没 root 寸步难行
xiangyuecn
14 小时 8 分钟前
对于申请证书,强推一下:向 Let's Encrypt 、ZeroSSL 、Google 等支持 ACME 协议的证书颁发机构,免费申请获得用于 HTTPS 的 SSL/TLS 域名证书( RSA 、ECC/ECDSA ),支持多域名和通配符泛域名;只需在现代浏览器上操作即可获得 PEM 格式纯文本的域名证书,不依赖操作系统环境( Windows 、macOS 都能用),无需下载和安装软件,无需注册登录,纯手动操作,只专注于申请获得证书这一件事,简单易用,非常适用于希望手动快捷申请获得证书的使用场景

本网页客户端仅一个静态 HTML 文件,不依赖其他任何文件:
https://xiangyuecn.github.io/ACME-HTML-Web-Browser-Client/ACME-HTML-Web-Browser-Client.html
SenLief
13 小时 51 分钟前
跑一个 caddy
codingBug
13 小时 13 分钟前
ngrok ,cloudflare tunnels 可以
Leon6868
12 小时 18 分钟前
@xiangyuecn #24 佬!昨天调试你的 Record.js ,就是看到这个网页才萌生搭建解析服务的想法的!
eryajf
12 小时 13 分钟前
https://github.com/FiloSottile/mkcert

看看这个工具是不是你需要的
Leon6868
11 小时 15 分钟前
@xiangyuecn #23 个人认为手动安装证书是非常不优雅的行为,应该采用服务搞定的、不用额外配置的方法,何况手动管理可能还会带来安全问题
Leon6868
11 小时 12 分钟前
@eryajf #28 说实话本机调试怎么样都好,就算是非 localhost IP 也能通过 Chrome 设置强行开启 WebRTC ,我关心的是局域网内跨机器调试,特别是 Android 、iOS 等移动端,希望通过非侵入式的方法解决 tls 问题。
Leon6868
11 小时 11 分钟前
@codingBug #26 ngrok 免费太慢了
weijancc
10 小时 49 分钟前
本地搭个 https 环境就好, 无视证书风险访问即可
bluedawn
10 小时 23 分钟前
acme-dns 申请证书不行嘛
Ipsum
3 小时 50 分钟前
用 caddy 做反向代理,使用 acme 的 dns 验证,生成个通配符的证书不就好了?
Carlos920
3 小时 14 分钟前
还有个方式,使用 https://github.com/smallstep/certificates 搭建内网 CA
evill
2 小时 55 分钟前
Magic DNS (sslip.io) ??
Ariake265
2 小时 29 分钟前
namesilo 注册 6 位纯数字.xyz 域名一年只要 10 块钱左右,我直接买了 10 年的()
dzdh
2 小时 18 分钟前
支持 up

但是 考虑个问题啊 假设解析到了 127.0.0.1 我请求 https://uuid.usr.xx.com 的时候。后端服务是需要设置证书的。怎么办呢。 做个客户端?你做内网映射?
zephyru
1 小时 24 分钟前
目的是调试的话,mkcert 自签证书吧,调试设备里装 CA 就好了,不麻烦。
想弄正经证书,泛域名解析 + 自己内网搭个 DNS ,用哪个指哪个。
zephyru
1 小时 18 分钟前
@dzdh
#38
你这个描述让人费解。
你是说 https://uuid.usr.xx.com 解析到 127.0.0.1 但是后端服务不在 127.0.0.1 上?
这种情况下,本地起个 Nginx 转发一下就完了,下游服务可以忽略证书,Nginx 配个证书。

如果是应用解析到 127.0.0.1 ,在客户端请求 https://uuid.usr.xx.com (实际 ip 在别的地方)。
服务端配置证书就完了,不想配置就和上面一样用 Nginx 转发一下。
从应用的服务端请求同理。

总结:后端服务能配置证书就配置,不能配置就 Nginx 转发。

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

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

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

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

© 2021 V2EX