我已经编写了一个使用openssl下载服务器证书的应用程序。然后我在libCURL中使用此证书与HTTPS通信进行通信。 LibCRL提供无效的证书错误(60)。
在libCURL网站上搜索后,他们说要使用'cacert.pem'文件。然后我将选项CURLOPT_CAINFO设置为'cacert.pem'和'CURLOPT_CAPATH'到下载的证书文件。然后它工作正常。
然后我才知道下载的证书中缺少根证书,并且“cacert.pem”文件中存在根证书。
现在我的查询是
1)如何从服务器下载根证书?
2)另外,请让我知道设置证书的最佳做法。
答案 0 :(得分:2)
从不从服务器下载根证书。基础架构的重点在于您已拥有一组受信任的根证书。如果有人(直接或间接)签署了此根证书,则您可以信任该证书。如果你从服务器下载根证书,你基本上放弃了证书的整个想法,也可以使用HTTP。
但是,如果您使用自己的证书(自签名),还有一种方法:您可以maintain your own CA为此目的创建一个特殊的cacert.pem
,或者禁用证书检查(不建议使用后者,因为它会降低您的应用程序的安全性!)。
如果你正在做一些高级的东西,即没有像libCURL的cacert.pem
这样的标准捆绑包中包含的CA签署的证书那么你应该阅读这背后的理论,因为否则你冒着创建的风险从一开始就是一个易受攻击的应用程序。