假设我想发布一个商业产品,它有两个组件,用Java编写,使用RESTful API在本地网络上相互通信。它可以是一个音乐经理,一个联系数据库,一本烹饪书--重要的是,这是一个合理且极有可能发生的情况。
请注意,我说的是通过本地网络相互通信的两个组件--而不是与我的服务器通信。
那么我如何保证通信的安全呢?
我知道,如果我为世界设置一个HTTP服务器,我可以(甚至便宜)购买一个SSL证书。我已经做到了。但我不能告诉用户去购买证书--他们不会知道我在说什么,也永远不知道如何安装它。
那我该怎么办?把我自己签署的证书发给每个人,然后做一件很糟糕的事情,比如禁用Java中的证书验证?太可怕了我知道。但至少这些信息不会以纯文本的形式出现。
有人有更好的解决方案吗?
发布于 2015-09-13 12:17:36
更新了9月20日的,以澄清评论中提出的问题
为了了解如何做到这一点,让我们研究一下这样一个应用程序的可能部署场景。假设所讨论的应用程序由两个组件组成--客户机部分和服务器部分,打算安装在本地网络上的不同计算机上。我们希望我们的服务器部分只接受安全连接,因此本地网络被认为是敌对的。
发布于 2015-09-10 06:59:22
使用SSL2.0来保护您的服务,您应该只向客户端提供令牌,而不是双向OAuth。Facebook,Google等都在使用它。
发布于 2015-09-13 09:22:47
您的链接答案提供了另一种解决方案:不是禁用对自签名证书的证书验证,而是“导出证书(.)并将其导入您的JVM信任库”。
因此,只有在第一次发现未知证书时,才要求用户确认。
https://stackoverflow.com/questions/32505035
复制相似问题