使用Java(SunMSCAPI)访问Windows本地计算机个人密钥库

时间:2018-07-06 07:29:27

标签: java windows certificate client-certificates mscapi

是否可以使用 SunMSCAPI 使用Java访问Windows 本地计算机个人密钥存储?

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

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

关于some存在着use JNA个问题(我想避免,尤其是因为从那里检索私钥似乎很复杂)。
另外,有人used psexec模仿了SYSTEM用户(使用 psexec -s )。我也尝试过,但是没有成功。
最后,Java Bug系统中还有一个open bug

如果有人对如何使用Java从Windows的本地计算机个人存储中检索证书有想法,

1 个答案:

答案 0 :(得分:0)

否。您可以使用the wcsa utility,它将拦截对Windows Crypto API的JVM调用,并允许您访问本地计算机凭据。当然,这是针对十年前发生的实际问题JDK-6782021的破解。但这确实使您可以轻松访问本地计算机证书!

是的,可以访问它们,但是不能,不能使用普通的Java API访问它们。虽然您可以 使用商业产品JCAPI使用普通Java来访问它们,但是对于大多数使用wcsa util来说还是不错的。

The Open JDK maintainers are willing to take a patch, though,所以也许您可以使用wcsa回购中提供的代码来修复它:)