V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Leon6868
V2EX  ›  程序员

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

  •  
  •   Leon6868 · 15 小时 44 分钟前 · 1679 次点击

    动机

    最近在开发 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. 如果可行,这套流程是否有安全漏洞?

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

    欢迎任何建议!

    第 1 条附言  ·  10 小时 43 分钟前
    第 2 条附言  ·  10 小时 38 分钟前
    很好,已经有人做过了 https://github.com/Corollarium/localtls
    33 条回复    2024-10-25 01:07:55 +08:00
    shadowyue
        1
    shadowyue  
       15 小时 43 分钟前
    注册个自己的域名,弄个小服务器呗
    Leon6868
        2
    Leon6868  
    OP
       15 小时 41 分钟前
    @shadowyue #1 主要是自己注册域名要钱而且很麻烦,而且手动填写 dns 也很麻烦,所以想着设计一套自动化系统也许能帮到有需要的人。
    Nazz
        3
    Nazz  
       15 小时 41 分钟前
    用 cfssl 生成自签名证书就行了
    snipking
        4
    snipking  
       15 小时 39 分钟前
    参与调试的机器有多少啊,数量不大的话简单点就是做自签名证书,然后直接对服务器 IP 签发证书,再把 ca 证书装到调试设备上就行了
    jqknono
        5
    jqknono  
       15 小时 36 分钟前
    得先确认浏览器是否只允许本机 ip 和 https 域名开启 WebRTC 服务, 试试看开一个 private 窗口是否允许.
    Leon6868
        6
    Leon6868  
    OP
       15 小时 34 分钟前
    @jqknono #5 这个倒是可以确认,非本机的局域网 ip 根本无法获取麦克风和摄像头权限
    ligolas
        7
    ligolas  
       15 小时 25 分钟前
    看起来,你的需求 mkcert, https://github.com/FiloSottile/mkcert 完全能满足
    rrfeng
        8
    rrfeng  
       15 小时 20 分钟前
    你不想弄证书,和解析到哪有什么关系???解决了什么问题???
    andyskaura
        9
    andyskaura  
       15 小时 17 分钟前
    花你那个工夫,随便捞个证书都已经调试完毕了
    vinsony
        10
    vinsony  
       15 小时 15 分钟前   ❤️ 1
    eu.org+acme 不要钱
    cheng6563
        11
    cheng6563  
       15 小时 9 分钟前
    eu.org 搞个免费域名,然后搞个泛域名证书完事了
    IvanLi127
        12
    IvanLi127  
       14 小时 25 分钟前
    如果有一个可用的域名,就没这么多麻烦事了。绕这一圈,有域名的人已经调通功能合分支了。
    ajan
        13
    ajan  
       14 小时 22 分钟前
    mkcert +1
    catamaran
        14
    catamaran  
       13 小时 53 分钟前
    不太懂,开发环境想用域名,架个 dns 服务不就完了,甚至可以直接写到 host 文件中
    Belmode
        15
    Belmode  
       13 小时 41 分钟前
    #6 你要是为了过浏览器媒体权限,随便自签一个证书不就可以了。随便签,直接用 ip 访问 webrtc 的服务就行了。哪还那么麻烦,你搞域名,岂不是还要内网穿透?公司安全部门能允许你这么干。(笑
    mringg
        16
    mringg  
       13 小时 31 分钟前
    这个用 vscode 的那个端口映射就可以了,他那个能映射出 https 的链接地址
    JensenQian
        17
    JensenQian  
       12 小时 36 分钟前
    @Leon6868 #2 六位数 xyz 域名
    一年 spaceship 只要 0.67 美金,注册续费同价

    证书的话 let's 谷歌 zerossl 三个月的免费通配符,自动续签完事了
    lcy630409
        18
    lcy630409  
       12 小时 29 分钟前
    控制局域网的 dns apple.com 也是你的
    ETiV
        19
    ETiV  
       11 小时 50 分钟前 via iPhone
    前不久才通过的一个规范,把 .internal 后缀保留用来给内网需求的域名用

    https://github.com/nh2/internal-contstrained-pki
    上面这个工具可以做一个在约束了域名是 **.*.internal 前提下签发域名证书的 CA 根证书(不太好组织语言…),然后其他机器就可以比较放心的信任这个 CA 根证书,不会作恶
    esee
        20
    esee  
       11 小时 46 分钟前 via Android
    mkcert 不就一个命令的事情?自签证书有啥麻烦的?这才是最简单的方案。甚至你可以给 IP 签 https ,啥域名都不用。
    fuzzsh
        21
    fuzzsh  
       11 小时 43 分钟前 via Android   ❤️ 1
    realpg
        22
    realpg  
       11 小时 38 分钟前
    改 Host 表,自签 10 年/20 年证书,通用性最强还简单
    生成一次证书能用十年以上,有啥麻烦的
    移动端安装个证书信任 用邮箱就行 很简单 ios android 都傻瓜操作
    xiangyuecn
        23
    xiangyuecn  
       9 小时 54 分钟前   ❤️ 1
    最简单的就是用自己的正式域名,直接分配个本地开发子域名,使用正式的证书,手机上也能正常使用

    自签证书,那是十年前的事了,记得 Android 里面的浏览器早就不信任用户导入的根证书了,没 root 寸步难行
    xiangyuecn
        24
    xiangyuecn  
       9 小时 51 分钟前   ❤️ 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
    SenLief
        25
    SenLief  
       9 小时 34 分钟前
    跑一个 caddy
    codingBug
        26
    codingBug  
       8 小时 56 分钟前
    ngrok ,cloudflare tunnels 可以
    Leon6868
        27
    Leon6868  
    OP
       8 小时 1 分钟前
    @xiangyuecn #24 佬!昨天调试你的 Record.js ,就是看到这个网页才萌生搭建解析服务的想法的!
    eryajf
        28
    eryajf  
       7 小时 56 分钟前
    https://github.com/FiloSottile/mkcert

    看看这个工具是不是你需要的
    Leon6868
        29
    Leon6868  
    OP
       6 小时 58 分钟前
    @xiangyuecn #23 个人认为手动安装证书是非常不优雅的行为,应该采用服务搞定的、不用额外配置的方法,何况手动管理可能还会带来安全问题
    Leon6868
        30
    Leon6868  
    OP
       6 小时 55 分钟前
    @eryajf #28 说实话本机调试怎么样都好,就算是非 localhost IP 也能通过 Chrome 设置强行开启 WebRTC ,我关心的是局域网内跨机器调试,特别是 Android 、iOS 等移动端,希望通过非侵入式的方法解决 tls 问题。
    Leon6868
        31
    Leon6868  
    OP
       6 小时 54 分钟前
    @codingBug #26 ngrok 免费太慢了
    weijancc
        32
    weijancc  
       6 小时 32 分钟前
    本地搭个 https 环境就好, 无视证书风险访问即可
    bluedawn
        33
    bluedawn  
       6 小时 6 分钟前 via iPhone
    acme-dns 申请证书不行嘛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1218 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:13 · PVG 07:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.