【问题标题】:Access Windows Local Machine Personal Keystore with Java (SunMSCAPI)使用 Java (SunMSCAPI) 访问 Windows 本地计算机个人密钥库
【发布时间】:2018-12-14 18:05:14
【问题描述】:

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

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

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

存在someuse JNA 相关的问题(我想避免这种情况,尤其是因为从那里检索私钥似乎很复杂)。
另外,有人used psexec 冒充 SYSTEM 用户(使用 psexec -s)。我也试过这个,但没有成功。
最后,Java Bug System 中还有一个open bug

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

【问题讨论】:

标签: java windows certificate client-certificates mscapi


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答,我最终使用 C# 来完成此任务,因为在我的情况下,拦截 JVM 调用在生产中太难了...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2016-01-31
  • 2020-10-28
  • 2014-09-14
相关资源
最近更新 更多