0

我编写了一个应用程序来使用 openssl 下载服务器证书。然后我在 libCURL 中使用此证书与 HTTPS 通信进行通信。LibCRL 给出无效证书错误 (60)。

在 libCURL 站点中搜索后,他们说要使用“cacert.pem”文件。然后我将选项 CURLOPT_CAINFO 设置为“cacert.pem”和“CURLOPT_CAPATH”以下载证书文件。然后它工作得很好。

然后我才知道下载的证书中缺少根证书,并且根证书存在于“cacert.pem”文件中。

现在我的查询是

1) 如何从服务器下载根证书?

2)另外请让我知道设置证书的最佳实践。

4

1 回答 1

2

永远不要从服务器下载根证书。基础设施的全部意义在于您已经拥有一组受信任的根证书。如果有人使用此根证书(直接或间接)签名,那么您可以信任该证书。如果您从服务器下载根证书,您基本上放弃了证书的整个概念,并且还可以使用 HTTP。

但是,如果您使用自己的证书(自签名),还有另一种选择:您可以维护自己的 CAcacert.pem并为此目的创建一个特殊的 CA,或者禁用证书检查(不建议使用后者,因为它会使您的应用程序不太安全!)。

如果您正在做一些高级的事情,即没有 CA 签名的证书包含在像 libCURL 这样的标准捆绑包中,cacert.pem那么您绝对应该阅读这背后的理论,因为否则您将冒着从一开始就创建易受攻击的应用程序的风险。

于 2013-08-19T13:10:30.763 回答