自签名 SSL,浏览器提示不安全 - V2EX
20ng21
V2EX    SSL

自签名 SSL,浏览器提示不安全

  •  
  •   20ng21 2021-08-23 17:31:33 +08:00 4291 次点击
    这是一个创建于 1509 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教各位大佬,内网网站使用自签名 SSL,客户要求去除浏览器的不安全提示,请问有什么解决办法吗?
    要求任意客户端打开都不能有不安全提示,所以预先在客户端上安装 CA 证书的方式应该不行。
    第 1 条附言    2021-08-23 18:04:27 +08:00
    哦,对了,一个局域网可能有多台设备,都是通过各自的 ip 地址访问的,所以域名映射应该不行。⊙⊙
    32 条回复    2021-10-31 17:32:13 +08:00
    Xusually
        1
    Xusually  
       2021-08-23 17:33:57 +08:00
    没有办法
    内网也可以使用可信任 CA 签发的 ssl 证书呀,ip 证书是不好弄,域名证书,特别是单域名 dv 的证书基本上是免费的,你申请好,内网域名解析到内网 ip 还不是一样用?
    Vegetable
        2
    Vegetable  
       2021-08-23 17:43:00 +08:00
    最后发现使用 http 成了唯一解...
    AoEiuV020
        3
    AoEiuV020  
       2021-08-23 17:47:46 +08:00
    不管内不内网,都一样搞个域名和受信任的证书就可以,
    20ng21
        4
    20ng21  
    OP
       2021-08-23 17:48:01 +08:00
    @Xusually #1 没有域名,只有 ip,难受~
    Xusually
        5
    Xusually  
       2021-08-23 17:49:23 +08:00
    @20ng21 ,让客户去申请个域名不行么,内网解析一下,listen 一下,用又没什么影响
    lower
        6
    lower  
       2021-08-23 17:51:53 +08:00   1
    直接整个客户端壳子浏览器套网页展示。。。域名地址啥的也不需要看了。。而且还可以美其名曰:为了安全……
    20ng21
        7
    20ng21  
    OP
       2021-08-23 17:51:59 +08:00
    内网域名解析到内网 ip 的话岂不是还需要去修改客户那边的网络环境。 现在我们这边只是提供了一台嵌入式设备,客户通过 ip 访问,他那边的网络环境应该没法改。。
    20ng21
        8
    20ng21  
    OP
       2021-08-23 17:53:07 +08:00
    @lower #6 666,视角独特
    m2276699
        9
    m2276699  
       2021-08-23 17:53:59 +08:00
    网管改下域名的路由规则就可以映射到指定 ip
    20ng21
        10
    20ng21  
    OP
       2021-08-23 17:59:51 +08:00
    哦,对了,一个局域网可能有多台设备,都是通过各自的 ip 地址访问的,所以域名映射应该不行。⊙⊙
    eason1874
        11
    eason1874  
       2021-08-23 18:01:26 +08:00
    如果客户机可以访问外网,直接给域名添加权威解析,地址就填内网 IP

    否则,要么安装证书,要么 HTTP
    Tumblr
        12
    Tumblr  
       2021-08-23 18:05:26 +08:00
    这是一个很( fei )有( chang )意( za )思( luan )的问题。。。
    1. 有内部 CA 么?如果是内部访问,有内部 CA 的话自己颁发一个就好了;
    2. 有集中管理环境么?如果有,推个证书也是可以的;
    3. 如果都没有,去申请个域名,申请个证书,这个是最快实现的方法。至于解析,你在 CF 上设置解析到 10.x.x.x 也不是不可以。
    20ng21
        13
    20ng21  
    OP
       2021-08-23 18:08:42 +08:00
    @Tumblr #12 什么叫推个证书呀
    PrinceofInj
        14
    PrinceofInj  
       2021-08-23 18:13:31 +08:00 via Android
    @20ng21 把需要的证书推倒客户端信任根签发
    20ng21
        15
    20ng21  
    OP
       2021-08-23 18:14:15 +08:00
    @PrinceofInj # 14 哦哦 多谢 明白了~
    abc612008
        16
    abc612008  
       2021-08-23 18:24:52 +08:00
    如果真的因此换 http 了还真的是为了表面上安全反而变得不安全。挺讽刺的。
    xylophone21
        17
    xylophone21  
       2021-08-23 19:01:17 +08:00
    1. 申请一个统一的域名,导向云引导页面,列出所有设备,让用户选择
    2. 设备与云通讯,选举一个跑网关,网关与各设备直接用自签证书保证安全
    3. 如果设备的局域网 IP 地址是变化的,通过 DDNS
    4. 如果设备出现在两个不同的局域网,在步骤 2 的云识别,把第二个局域网的导向第二个域名,同时在第二个局域网内也选举出一个网关

    仅提供一个思路,应该还有不完善的地方
    xylophone21
        18
    xylophone21  
       2021-08-23 19:05:04 +08:00
    @xylophone21

    想复杂了,简化一下:
    1. 每个设备上线时向云发送指令,让云帮忙分配一个域名,指向设备的内网地址(类似 DDNS ),下线是回收
    2. 用户总是打开你云端的页面,列出所有在线的设备,然后用临时域名跳转,访问设备
    xylophone21
        19
    xylophone21  
       2021-08-23 19:30:21 +08:00
    又想到一个方案:浏览器总是打开云上的一个页面,用类似 https://github.com/szimek/sharedrop 的方法找到局域网上的所有设备,进入设备时仍然访问云端页面,这个页面通过 WebRTC 与设备 P2P 传输数据,再交给前端渲染。

    sharedrop 的实现原理要看一下他的代码,关键是怎么猜测两个端在同一个局域网,不过对你的场景来说,假设所有的设备都在一个局域网,问题应该也不大,联不通的显示一下就好了。
    GG668v26Fd55CP5W
        20
    GG668v26Fd55CP5W  
       2021-08-23 19:39:44 +08:00 via iPhone
    申请个域名,指向内网 IP,一分钱也不想出的话也有免费的域名。
    iseki
        21
    iseki  
       2021-08-23 19:42:38 +08:00 via Android
    不行的,真有这种东西岂不是一定程度上给 mitm 大开方便之门?
    jim9606
        22
    jim9606  
       2021-08-23 19:59:03 +08:00
    无外部依赖、可以用裸 IP 、麻烦的做法:内网部署私有 CA,内网客户端系统安装私有 CA 证书为信任根,可以解决浏览器问题。

    有外部依赖、只能用域名、相对省事的方法:注册一个域名并找一个支持 DNS API/RFC2136 的域名解析商,用 DNS-TXT 验证的方式申请 Let's Encrypt 域名证书(或其他 ACME 兼容的公共 CA )。这个验证方式并不要求内网服务器暴露。
    Showfom
        23
    Showfom  
    PRO
       2021-08-23 20:13:32 +08:00
    这个问题简单

    首先,你需要一段公网 IP,至少需要一个 /24 起步

    然后在公网上广播上去并使用,并给需要的 IP 申请证书

    然后在路由器里把公网 IP 设置成内网 IP 段来用,就直接劫持自己的这段 IP

    公网的 IP 只要打开 80 和 443 端口是可以申请证书的
    crystom
        24
    crystom  
       2021-08-23 21:24:29 +08:00   1
    xip.io 可以把 ip 做成域名,就有人搞了个 https://sslip.io/ 这个公开部署的可能已经被吊销了,但是私有部署是没问题的
    crystom
        25
    crystom  
       2021-08-23 21:25:21 +08:00
    192.168.20.46.xip.io resolves to 192.168.20.46 就这个例子
    yeqizhang
        26
    yeqizhang  
       2021-08-23 22:03:13 +08:00 via Android
    用 ip 应该没办法,只能在每个客户机上安装证书。也见过别人是这么搞,在登陆界面给个安装文件的下载
    Mutoo
        27
    Mutoo  
       2021-08-23 23:06:37 +08:00
    分享一个我在项目里用的方案 TL,DR:

    1) 脚本自生成证书,绑定 localhost (开发用)+ *.local mDNS 地址(内网访问)+ <内网 IP>.nip.io (以备 mDNS 失效)
    2) 提供 http://网址 /CA 用于下载证书

    开发者只要运行一次脚本,生成证书并使用该证书部署网站即可。
    用户只要第一次手动下载证书并信任即可。

    用到了 nip.io 这个 wildcard dns 服务。

    https://github.com/mutoo/axidraw-web#self-signed-cert
    Mutoo
        28
    Mutoo  
       2021-08-23 23:09:01 +08:00
    @Mutoo 这个方案支持同一证书添加多个 IP,也支持子证书。另外由于是根证书+子证书的形式。客户端只要下载根证书公钥,即使新增 IP 的话也不需要重复下载信任证书的过程。
    20ng21
        29
    20ng21  
    OP
       2021-08-24 08:55:40 +08:00
    感谢各位提供的建议。
    我打算在登录页面弄个证书下载看看
    LukeChien
        30
    LukeChien  
       2021-08-24 13:19:41 +08:00 via Android
    要不你们公司申请个 CA 吧
    BitCert
        31
    BitCert  
       2021-09-18 22:10:59 +08:00
    公网 IP 好解决,内网 IP 只能搞 CFCA 证书,我们这边的证书是支持公网 IP 的,全球信任
    mingtdlb
        32
    mingtdlb  
       2021-10-31 17:32:13 +08:00
    客户端导证书为啥我还是提示不安全...能贴下自签命令 openssl 不
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3578 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:46 PVG 08:46 LAX 17:46 JFK 20:46
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86