首页 > 解决方案 > 尝试使用 Java KeyStore 类将自签名 CA 证书导入 Windows 根信任库时无法阻止/绕过用户提示

问题描述

尝试使用 Java KeyStore 类将自签名 CA 证书导入 Windows 根信任库时无法阻止/绕过用户提示

我已成功生成自签名 Root CA X509Certificate。现在由于它是一个自签名证书,我想将它从 Java 导入到 Windows 根信任库(受信任的根证书颁发机构)。当我尝试使用 Keystore 类从 Java 将证书导入 Windows-ROOT 时,Java 代码会运行,但是会提示我们需要信任并通过单击“是”来接受导入。我们如何防止或绕过此提示以接受此证书导入弹出窗口并直接导入证书而无需任何用户操作?

我尝试使用相同的代码将证书导入 Windows-MY“个人”信任库,但没有收到任何弹出用户提示。证书已成功从 Java 导入个人信任库。同样,我也想在没有任何用户提示的情况下将证书导入 Windows-ROOT。请帮忙。

KeyStore keyStore = KeyStore.getInstance("Windows-ROOT", "SunMSCAPI");
keyStore.load(null, null);  // Load keystore

keyStore.setCertificateEntry("AliasNameExample", x509Certificate);
keyStore.store(null, null);

使用 Java 代码,我们如何将自签名 CA 证书导入 Windows 根信任库,而不会提示用户输入接受“是/否”。

标签: javacryptographybouncycastle

解决方案


您无法绕过此提示对话框。它嵌入在 crypt32.dll 库(CertAddCertificateContextToStore函数)中。

唯一的解决方法是使用本地机器存储。但是,它需要完全的管理员权限。


推荐阅读