Windows上的CA证书目录

5

我用C语言写了一个网络客户端,通常在linux上工作,但是我不知道在windows上如何处理CA证书。而且windows的手册并不是很好。

Windows默认存在一个CA证书目录(根目录)吗?

就像linux下的/etc/ssl/certs/目录一样,其中包含了一系列CA证书。

我需要这个来适应使用openSSL的程序。

你能帮助我吗?非常感谢。


除了重新安装OpenSSL,有没有其他方法可以更正OpenSSL已知的证书目录地址?环境变量似乎无效。 - David Spector
3个回答

1

您可以使用这些函数访问Windows证书存储(其中包含CA证书)并操作证书:

CertOpenSystemStore()
CertEnumCertificatesInStore()
CertCloseStore()

使用以下方法将DER证书转换为OpenSSL X509结构:

d2i_X509()

例如,请查看此链接:

TLS客户端:

.


1
我不相信Windows将您的证书存储在默认文件位置,而是在注册表条目中。请查看此链接 - 它适用于Windows Server 2003,但我认为大部分信息仍然相关。
通常用于管理证书的基本工具是Certreq.exe和Certutil.exe。 这是一个基本的C++程序示例,演示如何为Windows插入/创建证书。它没有涉及到您问题的网络部分,但我认为您可能会发现它有用。
祝你好运。

1
“Windows系统默认存在一个CA证书目录(根目录)吗?就像Linux下的/etc/ssl/certs/目录一样,那是一个CA证书列表。”
“不是的。在Windows上,你必须提供一个包含根和中间证书的文件与你的应用程序一起使用。它可以来自Linux,或者你可以通过certmgr手动从Windows存储中导出必要的证书。或者你可以借助WinAPI(如Qt所做的那样)编程创建可信根和中间证书列表。”

实际上,Windows® 确实有一个系统范围的证书存储和每个用户一个。但是它们并不位于文件系统中。 - mirabilos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接