首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >商用产品组件的安全HTTP通信

商用产品组件的安全HTTP通信
EN

Stack Overflow用户
提问于 2015-09-10 14:44:16
回答 4查看 345关注 0票数 10

假设我想发布一个商业产品,它有两个组件,用Java编写,使用RESTful API在本地网络上相互通信。它可以是一个音乐经理,一个联系数据库,一本烹饪书--重要的是,这是一个合理且极有可能发生的情况。

请注意,我说的是通过本地网络相互通信的两个组件--而不是与我的服务器通信。

那么我如何保证通信的安全呢?

我知道,如果我为世界设置一个HTTP服务器,我可以(甚至便宜)购买一个SSL证书。我已经做到了。但我不能告诉用户去购买证书--他们不会知道我在说什么,也永远不知道如何安装它。

那我该怎么办?把我自己签署的证书发给每个人,然后做一件很糟糕的事情,比如禁用Java中的证书验证?太可怕了我知道。但至少这些信息不会以纯文本的形式出现。

有人有更好的解决方案吗?

EN

回答 4

Stack Overflow用户

发布于 2015-09-13 20:17:36

更新了9月20日的,以澄清评论中提出的问题

为了了解如何做到这一点,让我们研究一下这样一个应用程序的可能部署场景。假设所讨论的应用程序由两个组件组成--客户机部分和服务器部分,打算安装在本地网络上的不同计算机上。我们希望我们的服务器部分只接受安全连接,因此本地网络被认为是敌对的。

  1. 安装服务器部件。安装时,使用目标计算机的主机名以编程方式创建自签名证书。如果计算机没有DNS记录(如myserver.mycorp.com),请使用它的IP地址--它必须是静态的,因为我们需要将客户端部分指向它。可以使用弹跳城堡API在代码中创建证书。
  2. 将客户端部件安装到另一台计算机上,并将生成的证书复制到安装文件夹。手动这样做可以有效地在服务器和客户端之间建立信任。试图通过敌对网络上的未加密连接自动完成这一任务将违背目的。
  3. 由于您严格地保护您自己的应用程序部分之间的通信,所以您完全可以控制该应用程序信任的证书。在客户端上,创建密钥存储库,并将生成的证书添加到其中: KeyStore.getInstance(KeyStore.getDefaultType());FileInputStream(yourCertificateFile);CertificateFactory cf = CertificateFactory.getInstance("X.509");X509Certificate c= (X509Certificate)cf.generateCertificate( fis );KeyStore ks = FileInputStream ks.load(null,aRandomKeystorePasswordCharArray);FileOutputStream fos =新FileOutputStream(aRandomKeystoreFileName);ks.store(fos,FileOutputStream);FileInputStream(); 告诉JVM,您的应用程序只会信任来自它自己的keystore的证书。 //在Windows System.setProperty("javax.net.ssl.trustStore",aRandomKeystoreFileName上的aRandomKeystoreFileName中用斜杠替换反斜杠'\‘;System.setProperty("javax.net.ssl.trustStorePassword",aRandomKeystorePassword);
票数 6
EN

Stack Overflow用户

发布于 2015-09-10 14:59:22

使用SSL2.0来保护您的服务,您应该只向客户端提供令牌,而不是双向OAuth。Facebook,Google等都在使用它。

https://en.wikipedia.org/wiki/OAuth

票数 2
EN

Stack Overflow用户

发布于 2015-09-13 17:22:47

您的链接答案提供了另一种解决方案:不是禁用对自签名证书的证书验证,而是“导出证书(.)并将其导入您的JVM信任库”。

因此,只有在第一次发现未知证书时,才要求用户确认。

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

https://stackoverflow.com/questions/32505035

复制
相关文章

相似问题

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