首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在代理和前端之间共享证书?

如何在代理和前端之间共享证书?
EN

Security用户
提问于 2015-07-21 11:25:44
回答 1查看 1.3K关注 0票数 6

在工作中,我被要求为WebSocket聊天应用程序创建一个参考拓扑,其中包括面向web的前端服务器和后端之间的代理。目前,我仍然在同一台服务器上运行前端和后端以进行开发,但我暂时将WebSockets设置为指向代理,该代理位于实验室中一个完全独立的服务器上。这两个服务器都在一个内部网络上,每个服务器都有一个单独的自签名证书.

当我在TLS上测试WebSocket时,它失败了,原因是证书是自签名的(没有显示任何对话来创建异常),直到我直接连接到代理并为证书设置了一个异常。在那之后,它的工作非常好,但在实践中,游客可能不会被允许这样做。所以,我需要找出如何同时证明两者。

据我所知,主要的方法是:

  • 将代理和前端放在不同的子域上(例如frontend.domain.com和proxy.domain.com),并为站点使用通配符证书。这将更快,更容易在实验室中使用,但IETF 劝阻
  • 使用带有主题可选名称的单个证书,并将frontend.mydomain.com和proxy.mydomain.com包含在www.mydomain.com的SAN字段中。据我所知,这与流氓/buggy域名的担保问题有共同之处。
  • 对这两台服务器使用完全独立的证书,就像我已经在做的那样。这是更麻烦的工作,特别是与自我签署的证书,但如果一个领域被破坏,这只是一个点的失败。我这里的主要问题是,如果代理证书和前端证书不是自签名的,那么这更有可能奏效吗?

有什么是我错过了上面的,还是有其他方法?

编辑22/07/2015:作为一个旁白,当我通过同样的机制发送一个XMLHttpRequest时,我发现我不得不关闭代理和后端之间的证书验证,以允许SSL握手进行,所以我想知道我的自签名证书是否是问题的真正原因。然而,这可能解决不了我上面的问题。

EN

回答 1

Security用户

回答已采纳

发布于 2016-08-24 14:41:08

如果你有一个自签署的证书,你需要你的客户信任它。

或者,您可以让客户不检查证书是否可信,但这是一个糟糕的想法。

你怎么做取决于你的客户。如果你有这样的东西:

代码语言:javascript
复制
[user-agent]---------[frontend]---------[proxy]---------[backend]

用户代理(可能是浏览器)是前端的客户端,前端是代理的客户机,代理是后端的客户端。

这里的每个客户端都需要信任服务器提供的证书,因为它是由已经被信任的实体签名的,或者是因为您将自签名证书添加到信任库中。

所以是的,自我签名会给你带来麻烦。

如果代理是因为可伸缩性的原因而存在,那么将来会有更多的后端主机。

如果前端后面的所有通信都是组织内部的,则可以设置自己的内部CA,并在前端和代理中信任它的根证书。

通过这种方式,您可以在内部添加新的主机,每个主机都有自己的证书,客户端将自动信任它。

对于不同的服务器使用不同的证书通常是一个好主意,不管您是否部署自己的CA。当密钥被破坏时,您需要撤销该密钥的证书,与该密钥共享证书的任何主机也将需要新的证书。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/94525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档