使用 Https 连接的 Java 应用程序 :"Connection refused error"

标签 java servlets https jar war

我为我的 JavaAppliaction 创建了一个 jar。我从这个应用程序连接到 WebApplicaton 中的 servlet(我将名称和密码从 swing 传递到 servlet)(这里我只是在 servlet 中显示名称和密码)。

我正在通过 SSL 连接 (Https) 传递数据。它在我的系统中运行良好。但是当我尝试在另一个系统中运行 jar 时,出现“连接被拒绝错误”。

注意:在另一个通过 http 连接传递数据的系统中运行 jar 工作正常。

我已经完成了这个link这建议我创建一个“jssecacerts”文件并将其粘贴到“另一个系统”的 $JAVA_HOME/jre/lib/security 文件夹中。但我仍然遇到同样的错误。为什么这不起作用??

最佳答案

一种可能的解决方案:尝试使用将公共(public)证书导入 java 默认 keystore 。

keytool -importcert -trustcacerts -file "path-to-public-cert"-keystore JAVA_HOME/jre/lib/security/cacerts

它会询问 keystore 密码默认 keystore 密码是“changeit”

您可以通过在网络浏览器(例如 chrome)中打开您的 URL 来获取公共(public)证书单击 URL 开头的图标 -> 单击证书信息 -> 详细信息选项卡 -> 单击导出 按钮。


更好的方法是:

  • 使用 JAVA_HOME/bin 中可用的“keytool”创建 keystore
  • 在此 keystore 中导入您服务器的公共(public)证书。
  • 将 keystore 与您的应用捆绑在一起。
  • 制作一个 bat/sh 文件来运行您的 jar,为 java 命令 -Djavax.net.ssl.trustStore=/path-to-your-keystore 提供参数

因此,每次您的应用启动时,它都会使用这个自定义 keystore 。因此您不必在运行应用程序的每个系统上复制 jssecacerts 文件。

关于使用 Https 连接的 Java 应用程序 :"Connection refused error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989340/

相关文章:

java - 在 java 中使用正则表达式从列分隔文件中的字段内的货币字段中删除美元符号和逗号

java - Mahout 和数据模型的自定义表

java - 图像分辨率 vs 屏幕分辨率 vs 相机分辨率

java - 从 tomcat 调用 servlet 抛出 HTTP Status 500 java.lang.NullPointerException

java - Google Appengine 上的 GWT 上传 - 跨站点保护

java - 通过 Cmd 行设置 Tomcat

c# - 在 .Net 中提交对 DirectoryEntry 的更改时发生 System.Runtime.InteropServices.COMException (0x8000500C)

java - 如何使用Proguard将测试类从生产版本中排除?

java - 以编程方式将 PEM 证书导入 Java KeyStore

.htaccess - 通过htaccess强制非www和https