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

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

  •  
  •   Leon6868 · 16 小时 2 分钟前 · 1691 次点击

    动机

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

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

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

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

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