问题标签 [keystore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
55023 浏览

java - Java:无效的密钥库格式错误

有谁知道如何解决这个java错误?

当我尝试从控制面板中的 Java 选项访问证书存储时,我得到了它。它阻止我加载需要提升权限的小程序。

错误图像

0 投票
9 回答
128506 浏览

java - 如何从密钥库中列出/导出私钥?

如何从密钥库中列出和导出私钥?

0 投票
1 回答
6303 浏览

java - 从 Keystore 获取私钥

keytool我有以下代码从我在 Windows中创建的密钥库中导出证书和密钥:

然而它在最后一行以“无法检索用于签名的私钥”失败它可以检索客户端证书,但是当它尝试客户端私有时,它失败了。

0 投票
7 回答
164668 浏览

keystore - 信任库和密钥库定义

密钥库和信任库有什么区别?

0 投票
1 回答
2823 浏览

java - 在 Java 中:如何使用 Keystore 和 Truststore 证书握手安全连接?

如果我有 2 个端子 A 和 B。TA 通过安全套接字连接连接 TB。我需要编写代码来实现两个终端之间的连接。

如何使用 Keystore 和 Truststore 握手这样的连接。换句话说,我在哪里放置密钥库/信任库证书文件?(TA或TB)

非常感谢任何好的建议或好的例子。

谢谢

0 投票
2 回答
19319 浏览

java - 通过 CLI 针对 Java 证书存储验证证书

如何通过命令行针对 Java 证书存储验证 X509(或 DER 格式)证书?

我已经研究过使用该keytool实用程序,但它看起来只处理导入/导出/显示功能(无验证)。

编辑:看起来好像keytool可以用于验证,但前提是尝试导入。我想问这个问题的更好方法是是否可以使用更被动的方法(例如:不修改密钥库)。谢谢!

0 投票
2 回答
7344 浏览

java - 如何在 Java 中解码 PKCS#5 加密的 PKCS#8 私钥

我有一个 PKCS#5 加密的 PKCS#8 RSA 私钥存储在磁盘文件中(最初由 SSLPlus 生成,大约在 1997 年),例如:

为此,我需要获取一个 Java Key 对象,然后我可以将其与匹配的证书一起添加到 KeyStore。私钥使用 100 字节的二进制密钥加密。

证书对象的创建很简单,但我似乎无法弄清楚如何从上述 Base64 编码的 PKCS#5 密钥到解密的 PKCS#8 RSA 私钥。在这一点上,我受到了阻碍,因为 SecretKeyFactory.generateSecret() 调用失败:

现在,密码确实不是 ASCII,在最严格的意义上是 0x00 到 0x7F,但是 PBEWithMD5AndDES 算法应该接受从 0x00 到 0xFF 的字符值。

谁能告诉我如何从 Base64 编码的值到我可以添加到密钥库的 Key 对象?


结论

使用 Java 发布的 PBEKey 只接受 ASCII 值在 0x20<=char<=0x7E 范围内的密码。通过制作我自己的 BinaryPBEKey 解决了我的非 ASCII 密码的这个问题,它允许从 0x00 到 0xFF 的字节值(见下文)。

我遇到的后续问题是我的 PKCS#8 数据未正确编码(显然是早期 SSL 实现的常见错误),因为 PKCS#1 数据需要包装在 ASN.1 八位字节字符串中。我编写了一个简单的修补程序来处理我的密钥,这些密钥的长度在 512 到 4096 位之间(见下文)。


私钥解码器


二进制PBEKey


PKCS#8 补丁

0 投票
5 回答
192034 浏览

java - 如何在特定连接上使用不同的证书?

我要添加到我们的大型 Java 应用程序中的一个模块必须与另一家公司的 SSL 安全网站进行对话。问题是该站点使用自签名证书。我有一份证书副本以验证我没有遇到中间人攻击,我需要将此证书合并到我们的代码中,以便与服务器的连接成功。

这是基本代码:

如果没有对自签名证书进行任何额外的处理,这将在 conn.getOutputStream() 处死掉,但有以下例外:

理想情况下,我的代码需要教 Java 接受这个自签名证书,用于应用程序中的这一点,而不是其他任何地方。

我知道我可以将证书导入 JRE 的证书颁发机构存储区,这将允许 Java 接受它。如果我能提供帮助,那不是我想采取的方法。在我们所有客户的机器上为他们可能不使用的一个模块进行操作似乎非常具有侵入性;它会影响使用相同 JRE 的所有其他 Java 应用程序,即使任何其他 Java 应用程序访问该站点的可能性为零,我也不喜欢这样。这也不是一个简单的操作:在 UNIX 上,我必须获得访问权限才能以这种方式修改 JRE。

我还看到我可以创建一个 TrustManager 实例来进行一些自定义检查。看起来我什至可以创建一个 TrustManager,它在除此证书之外的所有实例中都委托给真正的 TrustManager。但是看起来 TrustManager 是全局安装的,我想这会影响我们应用程序的所有其他连接,这对我来说也不太合适。

设置 Java 应用程序以接受自签名证书的首选、标准或最佳方式是什么?我能完成上面提到的所有目标,还是不得不妥协?是否有涉及文件和目录以及配置设置以及几乎没有代码的选项?

0 投票
13 回答
159343 浏览

java - java.io.IOException:无效的密钥库格式

有谁知道如何解决这个问题?我尝试了很多东西,但都没有奏效。

当我单击更多详细信息时,我得到了这个:

0 投票
2 回答
5479 浏览

java - 在 PHP 中使用 Java 密钥库

我希望将一个小型 Java 安全库移植到 PHP。Java 实现使用密钥库来签署一些东西,我想知道如何在 PHP 中重新创建这个功能。当然,原始的 Java 实现仍然必须使用相同的密钥对/密钥库。

我对 PHP 的经验很少,以前也没有尝试过使用 Java 密钥库做任何可移植的事情。

我希望有某种方法可以将私钥导出为 PHP 可以使用的格式。

有谁知道在这种情况下我需要做什么?