当前位置:  开发笔记 > 编程语言 > 正文

通过Win32上的代码安装根CA证书

如何解决《通过Win32上的代码安装根CA证书》经验,为你挑选了1个好方法。

我们刚刚使用Microsoft的TS网关设置了一个新的远程访问解决方案,为了使其正常工作(安装我们的root ca证书,RDP 6.1客户端的要求等),需要在最终用户上进行几个有点繁琐的步骤.

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

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

目前该工具是一个C++应用程序,所以我不介意它是否是相当低级别的东西.



1> Murray..:

首先,您需要打开根证书存储区...

 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);

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

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有