首页 > 解决方案 > 使用 Java (SunMSCAPI) 访问 Windows 本地计算机个人密钥库

问题描述

有没有办法使用SunMSCAPI使用 Java 访问 Windows本地机器个人密钥存储?

通常,您可以使用WINDOWS-ROOT(大致相当于Java中的受信任存储)或WINDOWS-MY(包含个人证书,大致相当于Java中的密钥存储)从windows证书中检索证书贮存。

这对用户来说很好,但即使在模拟 SYSTEM 用户时,我也无法检索本地机器的个人证书。

存在一些使用 JNA的问题(我想避免,特别是因为从那里检索私钥似乎很复杂)。
此外,有人使用 psexec来模拟 SYSTEM 用户(使用psexec -s)。我也试过这个,但没有成功。最后, Java Bug System 中
还有一个未公开的错误。

如果有人知道如何使用 Java 从 Windows 中的本地计算机个人存储中检索证书,我将不胜感激。

标签: javawindowscertificateclient-certificatesmscapi

解决方案


不是。您可以使用wcsa实用程序,它将拦截对 Windows Crypto API 的 JVM 调用,并让您访问本地计算机凭据。这当然是对十年前报告的真正问题JDK-6782021的破解。但它确实让您以一种非常轻松的方式访问本地机器证书!

所以是的,可以访问它们,但是不,不可能使用纯 Java API 访问它们。不过,您可以使用商业产品JCAPI使用普通 Java 访问它们,但对于大多数用途来说,wcsautil 都很好。

不过,Open JDK 维护人员愿意打补丁,所以也许您可以使用wcsarepo 中提供的代码尝试修复它:)


推荐阅读