多个 SERVER 之间相互调用的安全性问题

2014-05-12 18:48:12 +08:00
 yueyoum
标题没写清楚,
情况是这样的。

有一堆server, 它们之间提供有 http api 供相互调用。

目前是直接 没有任何认证加密 直接发送。

但考虑到这些server会暴露在外网,不想指定特定IP允许访问(以后迁移机器徒曾麻烦)
所以现在必须对请求加以限制。

目前想到的方式有两种:

1, 这些api 走https, 并且nginx 开启client验证,
这个方式的好处就是 限制客户端,加密 一起搞定了。

折腾了一下午,
最后按照这个文章 http://drumcoder.co.uk/blog/2011/oct/19/client-side-certificates-web-apps/

设置好了客户端验证, 但firefox 没搞定, chromium 可以。
并且使用requests 也没搞定,一直报错。

2, 就是用 http basic auth
设置简单, 但安全性显然没有 https 高


或者,大家对此有什么好的建议?
2678 次点击
所在节点    程序员
7 条回复
yueyoum
2014-05-12 18:51:16 +08:00
上面没说清楚

firefox没搞定是 证书成功导入firefox,但在请求url的时候,报错

An error occurred during a connection to api.test.com. Peer's certificate has an invalid signature. (Error code: sec_error_bad_signature)

python requests 库, 一直包SSLError
yueyoum
2014-05-12 19:14:51 +08:00
更新

firefox 也OK了,

在生成 server.csr 的时候 除了common name 其他的都别填
common name 就是域名

client.csr 的 common name 别填 域名
ritksm
2014-05-12 19:23:17 +08:00
如果暴露给用户的Server还有相互之间的调用的话...说明这个架构设计的有问题

本来一个内网隔离就解决了的问题...何必搞那么复杂 而且加了https以及验证以后必然会影响性能
wy315700
2014-05-12 19:23:25 +08:00
post里加一个字段 走HTTPS
yueyoum
2014-05-12 19:40:08 +08:00
@ritksm

我也知道,但当初期这些server组件 其实是全部署在一台机器上的时候,………………

理论总是要向现实妥协。


而且我感觉如果对API请求做了认证加密,也更加放心自如的部署机器。
KentY
2014-05-12 20:20:53 +08:00
我看着像是web service 的use case...
soulteary
2014-05-13 01:17:13 +08:00
@yueyoum 其中一台做隔离做权限池用途,根据访问量划块内存给机器交互授权用,当机器A访问机器B的时候,A先访问权限服务器,设置一个token(token由时间+盐+你的密钥hash出来),然后访问B,B带着A的KEY去请求权限服务器即可。实现较易,且行且珍惜。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/112213

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX