1
Xusually 2021-08-23 17:33:57 +08:00
没有办法
内网也可以使用可信任 CA 签发的 ssl 证书呀,ip 证书是不好弄,域名证书,特别是单域名 dv 的证书基本上是免费的,你申请好,内网域名解析到内网 ip 还不是一样用? |
2
Vegetable 2021-08-23 17:43:00 +08:00
最后发现使用 http 成了唯一解...
|
3
AoEiuV020 2021-08-23 17:47:46 +08:00
不管内不内网,都一样搞个域名和受信任的证书就可以,
|
6
lower 2021-08-23 17:51:53 +08:00 1
直接整个客户端壳子浏览器套网页展示。。。域名地址啥的也不需要看了。。而且还可以美其名曰:为了安全……
|
7
20ng21 OP 内网域名解析到内网 ip 的话岂不是还需要去修改客户那边的网络环境。 现在我们这边只是提供了一台嵌入式设备,客户通过 ip 访问,他那边的网络环境应该没法改。。
|
9
m2276699 2021-08-23 17:53:59 +08:00
网管改下域名的路由规则就可以映射到指定 ip
|
10
20ng21 OP 哦,对了,一个局域网可能有多台设备,都是通过各自的 ip 地址访问的,所以域名映射应该不行。⊙﹏⊙
|
11
eason1874 2021-08-23 18:01:26 +08:00
如果客户机可以访问外网,直接给域名添加权威解析,地址就填内网 IP
否则,要么安装证书,要么 HTTP |
12
Tumblr 2021-08-23 18:05:26 +08:00
这是一个很( fei )有( chang )意( za )思( luan )的问题。。。
1. 有内部 CA 么?如果是内部访问,有内部 CA 的话自己颁发一个就好了; 2. 有集中管理环境么?如果有,推个证书也是可以的; 3. 如果都没有,去申请个域名,申请个证书,这个是最快实现的方法。至于解析,你在 CF 上设置解析到 10.x.x.x 也不是不可以。 |
14
PrinceofInj 2021-08-23 18:13:31 +08:00 via Android
@20ng21 把需要的证书推倒客户端信任根签发
|
15
20ng21 OP @PrinceofInj # 14 哦哦 多谢 明白了~
|
16
abc612008 2021-08-23 18:24:52 +08:00
如果真的因此换 http 了还真的是为了表面上安全反而变得不安全。挺讽刺的。
|
17
xylophone21 2021-08-23 19:01:17 +08:00
1. 申请一个统一的域名,导向云引导页面,列出所有设备,让用户选择
2. 设备与云通讯,选举一个跑网关,网关与各设备直接用自签证书保证安全 3. 如果设备的局域网 IP 地址是变化的,通过 DDNS 4. 如果设备出现在两个不同的局域网,在步骤 2 的云识别,把第二个局域网的导向第二个域名,同时在第二个局域网内也选举出一个网关 仅提供一个思路,应该还有不完善的地方 |
18
xylophone21 2021-08-23 19:05:04 +08:00
@xylophone21
想复杂了,简化一下: 1. 每个设备上线时向云发送指令,让云帮忙分配一个域名,指向设备的内网地址(类似 DDNS ),下线是回收 2. 用户总是打开你云端的页面,列出所有在线的设备,然后用临时域名跳转,访问设备 |
19
xylophone21 2021-08-23 19:30:21 +08:00
又想到一个方案:浏览器总是打开云上的一个页面,用类似 https://github.com/szimek/sharedrop 的方法找到局域网上的所有设备,进入设备时仍然访问云端页面,这个页面通过 WebRTC 与设备 P2P 传输数据,再交给前端渲染。
sharedrop 的实现原理要看一下他的代码,关键是怎么猜测两个端在同一个局域网,不过对你的场景来说,假设所有的设备都在一个局域网,问题应该也不大,联不通的显示一下就好了。 |
20
falcon05 2021-08-23 19:39:44 +08:00 via iPhone
申请个域名,指向内网 IP,一分钱也不想出的话也有免费的域名。
|
21
iseki 2021-08-23 19:42:38 +08:00 via Android
不行的,真有这种东西岂不是一定程度上给 mitm 大开方便之门?
|
22
jim9606 2021-08-23 19:59:03 +08:00
无外部依赖、可以用裸 IP 、麻烦的做法:内网部署私有 CA,内网客户端系统安装私有 CA 证书为信任根,可以解决浏览器问题。
有外部依赖、只能用域名、相对省事的方法:注册一个域名并找一个支持 DNS API/RFC2136 的域名解析商,用 DNS-TXT 验证的方式申请 Let's Encrypt 域名证书(或其他 ACME 兼容的公共 CA )。这个验证方式并不要求内网服务器暴露。 |
23
Showfom 2021-08-23 20:13:32 +08:00
这个问题简单
首先,你需要一段公网 IP,至少需要一个 /24 起步 然后在公网上广播上去并使用,并给需要的 IP 申请证书 然后在路由器里把公网 IP 设置成内网 IP 段来用,就直接劫持自己的这段 IP 公网的 IP 只要打开 80 和 443 端口是可以申请证书的 |
24
crystom 2021-08-23 21:24:29 +08:00 1
xip.io 可以把 ip 做成域名,就有人搞了个 https://sslip.io/ 这个公开部署的可能已经被吊销了,但是私有部署是没问题的
|
25
crystom 2021-08-23 21:25:21 +08:00
192.168.20.46.xip.io resolves to 192.168.20.46 就这个例子
|
26
yeqizhang 2021-08-23 22:03:13 +08:00 via Android
用 ip 应该没办法,只能在每个客户机上安装证书。也见过别人是这么搞,在登陆界面给个安装文件的下载
|
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 |
28
Mutoo 2021-08-23 23:09:01 +08:00
@Mutoo 这个方案支持同一证书添加多个 IP,也支持子证书。另外由于是根证书+子证书的形式。客户端只要下载根证书公钥,即使新增 IP 的话也不需要重复下载信任证书的过程。
|
29
20ng21 OP 感谢各位提供的建议。
我打算在登录页面弄个证书下载看看 😂 |
30
LukeChien 2021-08-24 13:19:41 +08:00 via Android
要不你们公司申请个 CA 吧
|
31
BitCert 2021-09-18 22:10:59 +08:00
公网 IP 好解决,内网 IP 只能搞 CFCA 证书,我们这边的证书是支持公网 IP 的,全球信任
|
32
mingtdlb 2021-10-31 17:32:13 +08:00
客户端导证书为啥我还是提示不安全...能贴下自签命令 openssl 不
|