为本地主机制作SSL感到高兴

时间:2012-05-29 12:29:08

标签: java security ssl

我有一个在客户端计算机上运行的java应用程序,它接收来自Web应用程序的Ajax请求。其中一些想要使用该服务的Web应用程序仅在https下提供。

我现在正在接受和处理SSL请求的java应用程序,但我必须首先在浏览器中导航到服务器并接受证书。

在这个监听https://localhost:my_port的Java应用程序中安装“真实证书”的最佳方法是什么?

在Windows上,似乎我可以让安装程序将自签名证书添加到计算机接受列表中。我还考虑过为thisApp.myDomain.com获取经过验证的证书,然后更改主机文件以将该地址指向127.0.0.1,但更改主机文件似乎是恶意的,我担心被反病毒攻击。

'main'应用程序是基于Web的系统。该基于Web的系统的一些用户希望能够在指定的计算机上打印到特殊打印机。 Java应用程序将安装在这些计算机上,然后Web应用程序将ajax请求发送到与打印机交互的Java应用程序。最终用户需要能够使用简单的一键式安装程序安装此Java服务。 Web应用程序从执行打印的计算机上的浏览器运行,因此是localhost。

如前所述,网络应用需要通过https连接到网络服务器(目前与亚马逊一起)。除了Chrome投诉不安全内容之外,与localhost打印服务器的连接不需要是https,而Chrome目前是我们用户使用最广泛的浏览器。

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:2)

如果通过“真实”证书,您的意思是由受信任的CA签署的证书,那么我认为答案是您可能不能。我不认为受信任的CA会为您发放一个。

我上面链接的答案表明您通过获取CA证书来设置自己的CA.其他替代方案是127.0.0.1的自签名证书,或调整您的DNS解析(例如通过客户端计算机的“主机”文件),以便具有有效证书的某个名称解析为客户端计算机上的环回地址。 / p>


顺便说一句 - 关闭证书验证是不可取的。最好将自签名证书添加到(例如)用户浏览器的可信证书列表中。


如果我遇到你的情况,我想我会改变127.0.0.1上的请求需要HTTPS的任何内容。要么不要求HTTPS,要么将IP地址更改为客户端自己的IP地址。

答案 1 :(得分:-1)

我尝试在客户端计算机上安装自我signet证书 - 但失败了。不记得是什么问题。所以我关闭了客户端代码中的证书验证。

您可以阅读here