在工作中,我被要求为WebSocket聊天应用程序创建一个参考拓扑,其中包括面向web的前端服务器和后端之间的代理。目前,我仍然在同一台服务器上运行前端和后端以进行开发,但我暂时将WebSockets设置为指向代理,该代理位于实验室中一个完全独立的服务器上。这两个服务器都在一个内部网络上,每个服务器都有一个单独的自签名证书.
当我在TLS上测试WebSocket时,它失败了,原因是证书是自签名的(没有显示任何对话来创建异常),直到我直接连接到代理并为证书设置了一个异常。在那之后,它的工作非常好,但在实践中,游客可能不会被允许这样做。所以,我需要找出如何同时证明两者。
据我所知,主要的方法是:
有什么是我错过了上面的,还是有其他方法?
编辑22/07/2015:作为一个旁白,当我通过同样的机制发送一个XMLHttpRequest时,我发现我不得不关闭代理和后端之间的证书验证,以允许SSL握手进行,所以我想知道我的自签名证书是否是问题的真正原因。然而,这可能解决不了我上面的问题。
发布于 2016-08-24 14:41:08
如果你有一个自签署的证书,你需要你的客户信任它。
或者,您可以让客户不检查证书是否可信,但这是一个糟糕的想法。
你怎么做取决于你的客户。如果你有这样的东西:
[user-agent]---------[frontend]---------[proxy]---------[backend]用户代理(可能是浏览器)是前端的客户端,前端是代理的客户机,代理是后端的客户端。
这里的每个客户端都需要信任服务器提供的证书,因为它是由已经被信任的实体签名的,或者是因为您将自签名证书添加到信任库中。
所以是的,自我签名会给你带来麻烦。
如果代理是因为可伸缩性的原因而存在,那么将来会有更多的后端主机。
如果前端后面的所有通信都是组织内部的,则可以设置自己的内部CA,并在前端和代理中信任它的根证书。
通过这种方式,您可以在内部添加新的主机,每个主机都有自己的证书,客户端将自动信任它。
对于不同的服务器使用不同的证书通常是一个好主意,不管您是否部署自己的CA。当密钥被破坏时,您需要撤销该密钥的证书,与该密钥共享证书的任何主机也将需要新的证书。
https://security.stackexchange.com/questions/94525
复制相似问题