当前位置: 首页 > 知识库问答 >
问题:

通过Java访问Windows证书存储证书?

乜心思
2023-03-14

我想写一些可以枚举和使用(签名)证书在货币用户/我和LocalMachine/我,但我还没有能够找到任何Windows证书存储,只有Java自己的秘密存储。这个链接看起来很有希望,但我只能使用Java。

我以前在SO上发现过这个问题,但这是五年前的问题,在计算机时代是很长的时间了。谢谢!

共有3个答案

阎丰羽
2023-03-14
KeyStore keyStore = KeyStore.getInstance(getKeyStoreType(), "SunMSCAPI");
keyStore.load(null, null);

try {
    Field field = keyStore.getClass().getDeclaredField("keyStoreSpi");
    field.setAccessible(true);

    KeyStoreSpi keyStoreVeritable = (KeyStoreSpi)field.get(keyStore);
    field = keyStoreVeritable.getClass().getEnclosingClass().getDeclaredField("entries");
    field.setAccessible(true);
} catch (Exception e) {
    LOGGER.log(Level.SEVERE, "Set accessible keyStoreSpi problem", e);
}

Enumeration enumeration = keyStore.aliases();
沈子实
2023-03-14

Java的跨平台特性有其自身的缺点——没有外部库,您无法访问某些(或许多)特定于操作系统的内容。Windows证书存储只能通过CryptoAPI本机函数访问,Java默认安装不支持这些函数。

你可以看看这个线程:从Java调用Win32 API方法

如果可以使用JNA,那么可以在crypt32中使用各种证书和证书存储函数。dll来枚举证书并执行签名操作。

卫焕
2023-03-14

-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT开始Java。

看见https://www.oracle.com/technical-resources/articles/javase/security.html了解更多信息。

 类似资料:
  • 问题内容: 我找到了一种方法来访问Jenkins中的凭据存储区: 但是现在我想获取我不能做的适当用户的密码… 我总是得到未知的方法等,如果我尝试访问passord等。 这样做的原因是使用此用户/密码来调用git并从存储库中提取信息。 我总是得到这样的东西: 在尝试了更多(以及Jeanne Boyarsky的暗示)之后,我发现我正在考虑编译。以下内容已为我提供了用户密码: 此外,通过使用以下代码片段

  • 我已经尝试了各种方法,通过导入一个基于BouncyCastle的X509Certificate实例和相关的私钥(RsaPrivateCrtKeyParameters)。NET X509Certificate2一个RSACryptServiceProvider实例,并将其保存到证书存储区(NET的X509Store,My/CurrentUser)。 在证书存储MMC管理单元中,似乎有一个与证书相关联

  • null 有什么想法吗?我一筹莫展...任何帮助都将不胜感激。

  • 如何生成新证书并将其添加到VS?我对Gitlab没有任何经验。

  • 问题内容: 在Linux中是否有固定或已知的位置用于存储证书(例如Windows证书存储区)? 谢谢。 问题答案: 是的,对于系统证书,请使用 和 对于用户SSH密钥,请使用用户的主文件夹,该文件夹位于名为.ssh的隐藏文件夹中。 要么 对于apache之类的网络服务器,您可以覆盖在httpd.conf中找到的证书的默认位置。

  • 目前,我在我的用户目录中的中有以下条目。 这将设置与git服务器交互时使用的证书(我公司的git服务器需要)。 但现在我无法克隆其他存储库(例如GitHub上的公共存储库),因为客户端总是使用配置好的证书,而该证书会被其他服务器拒绝。 我如何规避此认证问题?我可以将Git配置为使用Windows证书存储进行身份验证吗?