尝试使用 Java 密钥库类将自签名 CA 证书导入 Windows 根信任存储区时无法阻止/绕过用户提示
我已成功生成自签名根 CA X509 证书。现在,由于它是一个自签名证书,我想将其从 Java 导入到 Windows 根信任存储(受信任的根证书颁发机构)中。当我尝试使用密钥库类将证书从 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 根信任库,而不会提示用户输入接受"是/否"。
您无法绕过此提示对话框。它嵌入在crypt32.dll库中(CertAddCertificateContextToStore
函数)。
唯一的解决方法是使用本地计算机存储。但是,它需要完全管理员权限。