gpt4 book ai didi

java - SSL通信,能有多难?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:54 24 4
gpt4 key购买 nike

我的 PC 上运行着一个 Java 主应用程序,它可以将 XML 数据发送到 servelet 并接收返回的 XML 数据。 http://iamt.wisconsin.gov/IAM-WiEntUser/WiEntUserService?xml=

我可以使用 https://iamt.wisconsin.gov/IAM-WiEntUser/WiEntUserService?xml=来自 IE 和 Firefox,因为它们允许我加载私有(private)证书。

我想在 Java 主应用程序中使用 https,因为某些数据是敏感的。我收到带有 MSG=unkown 证书的 IOException。好的,这是有道理的,Java 不知道私有(private)证书。

我希望它会像告诉 Java 信任 FireFox 证书一样简单。System.setProperty("javax.net.ssl.trustStore", "C:/Documents and Settings/kendajm/Application Data/Mozilla/Firefox/Profiles/6f8ggdi7.default/cert8.db");但这会给出一个 IOException 和 MSG=Invalid keystore 格式。

SSL通信,到底有多难?我花了整整八个小时试图找出如何做到这一点。这似乎太简单了,以至于没有记录或非常困难,没有人有很好的例子。

帮助。

最佳答案

默认情况下,Mozilla cert8.db key 存储格式不可读(尽管可以“插入”可以解析它的提供程序。)将证书导入默认支持的 key 存储是最简单的。

首先,您需要一份证书副本。

在 Firefox 中,访问相关页面。单击窗口右下角状态栏上的“锁定”图标。在出现的对话框中,单击“查看证书”按钮。将出现一个新对话框;选择其“详细信息”选项卡。单击窗口底部的“导出”按钮将证书保存到文件中(使用 DER 或 PEM 格式)。

现在,您需要将证书转换为 Java 使用的 key 存储格式。

使用 JDK 的 keytool 工具:

keytool -import -keystore mykeystore.jks -alias iamt -file iamt.wisconsin.gov

当提示输入密码时,请选择一个新密码,稍后可用于验证 keystore 中的证书未被篡改。接下来,keytool 会提示您是否信任新证书——输入 yes!您应该有一个名为“mykeystore.jks”(或您选择的任何名称)的新 Java keystore 文件。

现在,运行您的程序,将新的 keystore 文件指定为“javax.net.ssl.trustStore”属性的值。


顺便说一句,我注意到您正在从您的服务返回 Java Beans XMLEncoder 输出。这种“长期持久性”格式是 JDK 中被忽视的瑰宝,但解析不受信任的内容并不安全。使用此语法,可以在执行解析的 JVM 中调用任何方法。这有点像使用不受信任的 JSON 的“eval”。因此,如果我正在实现客户端服务,我可能不愿意在不进行大量额外工作以将解析作为不受信任的代码“沙箱化”的情况下解析服务的结果。我假设该服务在请求中解析相同的格式,这对服务器同样是危险的。


当您询问有关错误消息的问题时,最好发布整个消息,包括堆栈跟踪(除非它实际上是一个 java.lang.StackOverflowError!)。它可能对您毫无意义,但通常它包含立即发现问题所需的信息。

关于java - SSL通信,能有多难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/610896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com