网络架构类似这样:
客户生产服务器( LAN,本地 API 接口在这里)-- 代理服务器( LAN/WAN )-- 阿里云 ECS (线上业务系统)
因为客户那边条件限制,没条件拉专线,代理服务器暂时只能通过一条 1Gbps 的电信宽带连接公网,当然动态 IP 动态域名这些都不是问题,难点的是如何在本地服务器和阿里云服务器之间建立一个安全的通讯机制。
客户提供的 API 接口是通过 http 传输的 json 格式数据,能想到最简单的方法是用 nginx 做 proxy,但似乎安全性上还是有问题。求助 v 站的大神提个思路,感谢!
1
ddefewfewf 2020-08-24 13:26:47 +08:00
内容加密
|
2
namaketa 2020-08-24 13:28:52 +08:00 1
你说的安全是指
1. 链路可靠,不被 isp 劫持和窃听 :加一层 https,不放心去 api 侧把 payload 再用 tls 加密一次。 2. 暴露在公网的 api 防止未授权访问:根据时间戳和自签发的私钥生成 token,可以参考 jwt |
3
opengps 2020-08-24 13:31:24 +08:00
https+白名单 ip(动态维护 ip 变更有点麻烦)
|
4
daniellu 2020-08-24 13:35:21 +08:00
可以考虑阿里的 VPN 服务,即内网 API 接口通过 VPN 连接到 ECS 所在的业务系统,对于 ECS 业务系统和 API 来说,就是内部网络访问,简单方便。
不过 VPN 服务要花钱~ |
5
zxyroy 2020-08-24 13:38:31 +08:00
其实可以反其道而行,能不能在客户那里部署一个 feeder,定时访问服务器上的 api,提供数据,这样就可以 https,也可以加密,还能避免动态 ip 更新不及时
|
6
dyllen 2020-08-24 13:45:13 +08:00
https+数据签名不够吗?各种支付的对接都是这样的,应该足够了吧。
|
7
tomczhen 2020-08-24 13:53:12 +08:00 via Android
建立可信信道,通过 VPN 接入即可,不需要对应用改造。
|
11
shuigui 2020-08-24 14:41:18 +08:00
简单说就是需要一个安全网关,可以找一下这个 [IPSecVPN 详解(深入浅出简单易懂)]
实际上自己搭建也不麻烦,strongswan 开源的 |
12
unco020511 2020-08-24 17:08:17 +08:00
https 足够
|
13
wizardoz 2020-08-24 17:15:29 +08:00
自己在云服务器上跑一个 OpenVPN,本地主机作为客户端连入 VPN 。解决了内网穿透和加密两个问题。
|
14
turan12 OP 根据楼上各位大神意见,我总结了两种方案,一种是 https+token,另一种是 vpn 。我先搭环境分别测试一下,过两天来更新这个帖子。
|
15
x66 2020-08-24 17:31:24 +08:00
https+IP 白名单就够了吧,服务器域名一般很少变化
|
17
Foralrec 2020-08-24 17:49:51 +08:00
通常是拨 VPN,正向还是反向都是这种方案居多
专线成本比较高,打通关系也比较俊男 |
18
Foralrec 2020-08-24 17:51:19 +08:00
sed 's/俊男 /困难 /'
|
19
Osk 2020-08-24 18:39:38 +08:00 via Android
用 autossh 建立 tcp tunnel 试试,效果类似 vpn,但更简单。
用证书登陆,安全性也足够,需要注意的是: 不支持 tcp,端口要固定,autossh 参数需要适当调整 (超时)。 以前没有 frp 等工具时我就是在家里网关上用 autossh 作内网穿透的,挺稳的。 |
21
yingfengi 2020-08-24 18:42:11 +08:00 via Android
sslvpn
|
22
GM 2020-08-24 18:45:00 +08:00 1
如果请求数量不大的话,可以考虑反向 MQ 方式。
你的软件往某个队列发送请求包,客户方系统安装个软件监听该队列,收到了就转发到客户 API 上,得到了结果后也发到队列里返回去。 |
23
goofool 2020-08-24 18:53:55 +08:00
花钱买阿里云的 SDWAN 服务
|
25
qile1 2020-08-24 18:58:50 +08:00 via Android
通用 vpn 不太稳定,尤其是 openvpn,好多地方都有干扰,gre 有时候就无法建立,所以提前测试大数据量长时间多时间段测试后可能可以去用一段时间,华为那个 vpn 不知道是啥私有协议
|
26
miao1007 2020-08-24 21:19:40 +08:00 via iPhone
使用 consul 的 sidecar
|
27
swulling 2020-08-24 21:34:05 +08:00 via iPad
VPN 算标准答案吧
|
28
felixcode 2020-08-24 21:47:10 +08:00 via Android
服务器上的防火墙和阿里云的访问控制都可以用起来,白名单。
|
29
ZRS 2020-08-24 22:03:56 +08:00
TLS / VPN
|
33
bilibilifi 2020-08-25 04:58:18 +08:00 via iPhone
最安全的还是 https 证书的双向绑定吧,还可以顺便保证前向安全性。唯一比较麻烦的是客户端设置
|
34
yc8332 2020-08-25 08:02:37 +08:00
frps 啊
这么简单 |
35
lxfxf 2020-08-25 08:15:55 +08:00
ssl -l
|
36
Foxkeh 2020-08-25 08:52:26 +08:00
跟我们公司一样的场景. 最初我们的对策是双向 https,后来又加了 token 校验.
|
37
dier 2020-08-25 10:54:07 +08:00
如果是从阿里云上请求本地的 API,阿里云一般有固定 IP 吧,直接在 API 这边设置白名单,只允许云服务器 IP 请求呀,再套层 SSL
|