java - 尝试使用 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 根信任库,而不会提示用户输入接受“是/否”。
解决方案
您无法绕过此提示对话框。它嵌入在 crypt32.dll 库(CertAddCertificateContextToStore
函数)中。
唯一的解决方法是使用本地机器存储。但是,它需要完全的管理员权限。
推荐阅读
- angular - 识别组件发射输出属性
- android - Android Studio 3.4.1,Kotlin“未解决的参考:mutableListOf”
- css - Angular Material mat-icon-button,在 Ionic 中垂直对齐文本
- html - 如何在标题 div 下移动我的视差背景图像
- c# - 提取安全组成员时服务器上没有此类对象
- angular - Angular 使用中的 Merge Map 运算符
- azure - ProcessEventsAsync 中的延迟检查点
- mongodb - 复制处于活动状态时无法删除“本地”数据库
- javascript - 使用 Selenium 和 Node.js 进行自动化测试
- azure - 如何删除数据工厂中的链接服务?