最近在开发 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
楼主认为可行的操作形式是:
usr 识别码和 *.usr.localhttps.top 的泛域名证书(识别码是为了预防潜在的滥用行为)。xxx-xxx-xxx-xxx.usr.localhttps.top,DNS 服务器将自动解析到对应的局域网 IP ,如 xxx.xxx.xxx.xxx 。将所有局域网 IP 段填充到 DNS 解析中并不现实,因此想到了两种解决方案:
namesilo 的 DNS API 实时登记请求解析的 IP 。ns1.localhttps.top),实现自动解析和权鉴。手动管理证书是及其不健康的,楼主的主要工作语言是 Python 和 NodeJS ,计划开发能自动下载证书、提供证书、维护证书的包。
最重要的,大家认为这套系统有必要存在吗?
欢迎任何建议!
|  |      1shadowyue      2024-10-24 15:30:18 +08:00 注册个自己的域名,弄个小服务器呗 | 
|  |      2Leon6868 OP @shadowyue #1 主要是自己注册域名要钱而且很麻烦,而且手动填写 dns 也很麻烦,所以想着设计一套自动化系统也许能帮到有需要的人。 | 
|  |      3Nazz      2024-10-24 15:32:27 +08:00 用 cfssl 生成自签名证书就行了 | 
|      4snipking      2024-10-24 15:33:59 +08:00 参与调试的机器有多少啊,数量不大的话简单点就是做自签名证书,然后直接对服务器 IP 签发证书,再把 ca 证书装到调试设备上就行了 | 
|  |      5jqknono      2024-10-24 15:37:17 +08:00 得先确认浏览器是否只允许本机 ip 和 https 域名开启 WebRTC 服务, 试试看开一个 private 窗口是否允许. | 
|      7ligolas      2024-10-24 15:48:42 +08:00 看起来,你的需求 mkcert, https://github.com/FiloSottile/mkcert 完全能满足 | 
|  |      8rrfeng      2024-10-24 15:53:54 +08:00 你不想弄证书,和解析到哪有什么关系???解决了什么问题??? | 
|  |      9andyskaura      2024-10-24 15:56:05 +08:00 花你那个工夫,随便捞个证书都已经调试完毕了 | 
|  |      12IvanLi127      2024-10-24 16:48:01 +08:00 如果有一个可用的域名,就没这么多麻烦事了。绕这一圈,有域名的人已经调通功能合分支了。 | 
|  |      13ajan      2024-10-24 16:51:29 +08:00 mkcert +1 | 
|  |      14catamaran      2024-10-24 17:20:24 +08:00 不太懂,开发环境想用域名,架个 dns 服务不就完了,甚至可以直接写到 host 文件中 | 
|  |      15Belmode      2024-10-24 17:32:19 +08:00 #6  你要是为了过浏览器媒体权限,随便自签一个证书不就可以了。随便签,直接用 ip 访问 webrtc 的服务就行了。哪还那么麻烦,你搞域名,岂不是还要内网穿透?公司安全部门能允许你这么干。(笑 | 
|  |      16ming2050      2024-10-24 17:42:29 +08:00 这个用 vscode 的那个端口映射就可以了,他那个能映射出 https 的链接地址 | 
|  |      17JensenQian      2024-10-24 18:37:30 +08:00 | 
|  |      19ETiV      2024-10-24 19:23:31 +08:00 via iPhone 前不久才通过的一个规范,把 .internal 后缀保留用来给内网需求的域名用 https://github.com/nh2/internal-contstrained-pki 上面这个工具可以做一个在约束了域名是 **.*.internal 前提下签发域名证书的 CA 根证书(不太好组织语言…),然后其他机器就可以比较放心的信任这个 CA 根证书,不会作恶 | 
|      20esee      2024-10-24 19:27:21 +08:00 via Android mkcert 不就一个命令的事情?自签证书有啥麻烦的?这才是最简单的方案。甚至你可以给 IP 签 https ,啥域名都不用。 | 
|  |      22realpg PRO 改 Host 表,自签 10 年/20 年证书,通用性最强还简单 生成一次证书能用十年以上,有啥麻烦的 移动端安装个证书信任 用邮箱就行 很简单 ios android 都傻瓜操作 | 
|  |      23xiangyuecn      2024-10-24 21:19:09 +08:00  1 最简单的就是用自己的正式域名,直接分配个本地开发子域名,使用正式的证书,手机上也能正常使用 自签证书,那是十年前的事了,记得 Android 里面的浏览器早就不信任用户导入的根证书了,没 root 寸步难行 | 
|  |      24xiangyuecn      2024-10-24 21:22:10 +08:00  1 对于申请证书,强推一下:向 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 | 
|  |      25SenLief      2024-10-24 21:39:36 +08:00 跑一个 caddy | 
|  |      26codingBug      2024-10-24 22:17:46 +08:00 ngrok ,cloudflare tunnels 可以 | 
|  |      27Leon6868 OP @xiangyuecn #24 佬!昨天调试你的 Record.js ,就是看到这个网页才萌生搭建解析服务的想法的! | 
|  |      28eryajf      2024-10-24 23:17:10 +08:00 | 
|  |      29Leon6868 OP @xiangyuecn #23 个人认为手动安装证书是非常不优雅的行为,应该采用服务搞定的、不用额外配置的方法,何况手动管理可能还会带来安全问题 | 
|  |      30Leon6868 OP @eryajf #28 说实话本机调试怎么样都好,就算是非 localhost IP 也能通过 Chrome 设置强行开启 WebRTC ,我关心的是局域网内跨机器调试,特别是 Android 、iOS 等移动端,希望通过非侵入式的方法解决 tls 问题。 | 
|  |      32weijancc      2024-10-25 00:41:15 +08:00 本地搭个 https 环境就好, 无视证书风险访问即可 | 
|  |      33bluedawn      2024-10-25 01:07:55 +08:00 via iPhone acme-dns 申请证书不行嘛 | 
|  |      34Ipsum      2024-10-25 07:40:17 +08:00 via Android 用 caddy 做反向代理,使用 acme 的 dns 验证,生成个通配符的证书不就好了? | 
|  |      35Carlos920      2024-10-25 08:16:10 +08:00 还有个方式,使用 https://github.com/smallstep/certificates 搭建内网 CA | 
|  |      38dzdh      2024-10-25 09:12:13 +08:00 | 
|  |      39zephyru      2024-10-25 10:06:40 +08:00 目的是调试的话,mkcert 自签证书吧,调试设备里装 CA 就好了,不麻烦。 想弄正经证书,泛域名解析 + 自己内网搭个 DNS ,用哪个指哪个。 | 
|  |      40zephyru      2024-10-25 10:13:08 +08:00 @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 转发。 | 
|  |      41dzdh      2024-10-25 10:17:52 +08:00 @zephyru #40  127.0.0.1 上跑了个 nginx 。https://uuid.usr.xx.com 解析到 127.0.0.1 了。本地 nginx 证书的私钥从哪来? server { ssl_certificate ?? } 只是域名解析到 127.0.0.1 没啥用啊。 | 
|  |      42lucasdev      2024-10-25 10:18:40 +08:00  2 我也觉得 Microsoft dev tunnel 就够了吧,就是楼上有人说过的 “vscode 的端口映射” https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/get-started?tabs=windows | 
|  |      43zephyru      2024-10-25 10:26:16 +08:00 | 
|  |      45igwen6w      2024-10-25 15:12:00 +08:00 何必这么费劲,目标机器启动 http 服务,自签证书,域名随便弄,手机上开个代理指向目标机器局域网 ip 就行了或者内网穿透。 | 
|  |      46Leon6868 OP @dzdh #44 对的,我就是这个意思,网站自动维护泛域名证书,要用直接下载就行了,也提供 python 、nodejs 的自动下载库。 | 
|      47mozhizhu      2024-10-25 22:05:43 +08:00 随便搞个域名,然后再 Linux 环境下,跑一个 nginxproxymanager ,轻松帮你解决问题( | 
|  |      48mmdsun      338 天前 | 
|      50esee      338 天前  1 @mmdsun 不会啊,其他机器是什么机器,可能没有信任到用户的证书。像苹果的话,你签 10 年有效期的可能就不认,你签个两年的用用就行,这是设备上限制的。抓包都是这个原理 | 
|      51jeesk      332 天前 via Android 实话说,突然感觉 sspip 容易被钓鱼,特别是 http 验证,能够伪造证书 | 
|      52jeesk      332 天前 via Android |