我为我的 JavaAppliaction 创建了一个 jar。从这个应用程序中,我连接到 WebApplicaton 中的 servlet(我将名称和密码从 swing 传递到 servlet)(这里我只是在 servlet 中显示名称和密码)。
我通过 SSL 连接(Https)传递数据。它在我的系统中工作正常。但是当我尝试在另一个系统中运行 jar 时,我收到“连接拒绝错误”。
注意:在另一个通过 http 连接传递数据的系统中运行 jar 工作正常。
我经历过这个link http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/这建议我创建一个“jssecacerts”文件并将其粘贴到“另一个系统”的 $JAVA_HOME/jre/lib/security 文件夹中。但我仍然遇到同样的错误。为什么这不起作用?
一种可能的解决方案:尝试使用将公共证书导入到 java 默认密钥库中。
keytool -importcert -trustcacerts -文件“公共证书路径”-keystore JAVA_HOME/jre/lib/security/cacerts
它将询问密钥库密码默认密钥库密码是“changeit”
您可以通过在网络浏览器(例如 chrome)中打开您的 URL 单击 URL 开头的图标 -> 单击证书信息 -> 详细信息选项卡 -> 单击导出来获取公共证书
按钮。
更好的方法是:
- 使用 JAVA_HOME/bin 中提供的“keytool”创建密钥库
- 在此密钥库中导入服务器的公共证书。
- 将密钥库与您的应用程序捆绑在一起。
- 制作一个bat / sh文件来运行你的jar,为java命令提供参数 -Djavax.net.ssl.trustStore=/path-to-your-keystore
因此,每次您的应用程序启动时,它都会使用这个自定义密钥库。因此,您不必在运行应用程序的每个系统上复制 jssecacerts 文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)