gpt4 book ai didi

c++ - 在 Win32 上通过代码安装根 CA 证书

转载 作者:可可西里 更新时间:2023-11-01 17:43:46 28 4
gpt4 key购买 nike

我们刚刚使用 Microsoft 的 TS 网关设置了一个新的远程访问解决方案,这需要代表最终用户执行一些有点繁琐的步骤才能使其正常工作(安装我们的根 ca 证书,RDP 6.1 客户端的要求等)。

为了使这个设置过程尽可能简单(其中很多用户没有技术头脑),我希望创建一个程序来自动执行所有这些任务。我的大部分工作正常,但我不完全确定如何将根 CA 证书导入 Windows 证书存储区。

因为这可能会在具有不同级别的补丁和更新的各种计算机上运行,​​所以我非常清楚 .NET 和任何非 native 的东西 - 该工具应该在没有用户的情况下“运行”必须安装任何额外的东西(好吧,我会说 windows XP,没有服务包,是 windows 的最低要求版本)。话虽如此,我不介意使用第三方的东西,只要它可以与该工具捆绑在一起,只要它不是很大,并且不引入任何交互步骤。理想情况下,Windows API 中的某些内容最好,但我似乎无法找到任何相关内容。

目前该工具是一个 C++ 应用程序,所以我不介意它是否是非常底层的东西。

最佳答案

首先你需要打开根证书库...

 HCERTSTORE hRootCertStore = CertOpenSystemStore(NULL,"ROOT");

然后使用 CertAdd 函数之一添加证书,例如 CertAddEncodedCertificateToStore。

CertAddEncodedCertificateToStore(hRootCertStore,X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,pCertData,cbCertData,CERT_STORE_ADD_USE_EXISTING,NULL);

pCertData 和 cbCertData 可能指向您从文件中读取的证书数据(不确定证书是否在文件中,或者您将如何将其包含在您的应用程序中)。

然后用...关闭商店

CertCloseStore(hRootCertStore,0);

注意:此代码如果以用户身份运行,会将证书安装到用户的根存储区,而不是计算机的根存储区。它还会产生一个警告对话框,用户必须理解该对话框并选择"is"以授权导入。如果您的安装程序可以在系统帐户中运行此代码,导入将影响计算机的根存储并且不会显示警告对话框。

关于c++ - 在 Win32 上通过代码安装根 CA 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656706/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com