Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中验证没有根证书的SSL证书?_Python_Ssl_Https_Openssl_Pyopenssl - Fatal编程技术网

如何在Python中验证没有根证书的SSL证书?

如何在Python中验证没有根证书的SSL证书?,python,ssl,https,openssl,pyopenssl,Python,Ssl,Https,Openssl,Pyopenssl,我想验证服务器的SSL证书,该服务器在根CA证书和服务器证书之间有一个中间证书 If已尝试使用'requests'和'httplib'包来验证证书,如果我向根证书提供路径(或在'requests'的情况下更新'requests\u CA\u BUNDLE'环境变量),则两者都会成功 但是,如果我只提供服务器证书或中间证书的路径,验证将失败。我想知道“requests”或“httplib”或Python中的任何其他包是否有任何方法可以仅使用服务器或中间CA证书而不尝试追溯到根CA证书来成功验证SS

我想验证服务器的SSL证书,该服务器在根CA证书和服务器证书之间有一个中间证书

If已尝试使用'requests'和'httplib'包来验证证书,如果我向根证书提供路径(或在'requests'的情况下更新'requests\u CA\u BUNDLE'环境变量),则两者都会成功

但是,如果我只提供服务器证书或中间证书的路径,验证将失败。我想知道“requests”或“httplib”或Python中的任何其他包是否有任何方法可以仅使用服务器或中间CA证书而不尝试追溯到根CA证书来成功验证SSL证书

如果Python很棘手,openssl或类似的linux工具是否也允许这样做

如何在Python中验证没有根证书的SSL证书

您可以使用一个从属CA而不是根CA来验证证书链。这叫做修路,有一个

您还可以直接使用终端实体服务器证书。只需将您的信任建立在它之上,而不是根CA或从属CA

如果不能使用根CA或从属CA,则必须转到另一个方案


这并不能直接回答你的问题。。。您可以做的一件事是,放弃整个PKI或PKIX机制

这个原则仍然适用,而且没有办法回避它。在PKIX中,您需要CA的根证书。锁定时,您需要知道主机的公钥

如果您不具备主机公钥的先验知识,则可以使用方案。它类似于工具的工作方式

固定对于企业应用程序非常有效。在企业中,组织发布自己的证书,因此它知道公开密钥是什么。他们甚至可以运行自己的私人PKI。由于组织事先知道这些信息,因此应用程序的构建附带了必要的证书。没有必要相信第一次使用

一个重要的提示,有严重的缺陷。最具破坏性的是(1)覆盖,攻击者可以破坏已知良好的引脚集;以及(2)当销组损坏时,错误报告将被禁用。RFC没有很好地列出安全注意事项

也可以看彼得·古特曼的。他讨论了所有这些事情


如果您尝试了“请求”和“httplib”包


不幸的是,我不知道你需要哪个图书馆来做这些事情。可能没有可用的库。

我现在不能接受你的答案,主要是因为你提到的许多事情我所知甚少,因此我需要一些时间才能尝试你的建议。但我肯定会投票支持你的答案。谢谢:)@akash12300-别担心。你陷入了深层次的安全工程问题。读古特曼的书。不要太快接受答案。给大家时间回答。你可能会发现一个更好的。