Python请求库 - 获取SSL证书信息

时间:2014-04-30 15:14:23

标签: python ssl python-requests

我正在寻找一种方法来获取有关远程站点使用请求使用的SSL证书的信息(CA和CN就足够了)。

当我使用例如socket + OpenSSL时,我很容易得到那些,但在我的代码中我使用了一个特殊的解析器(Python 'requests' library - define specific DNS?),所以我需要使用Requests或urllib2 - 到目前为止我检查了大部分通过检查模块请求代码,我认为无法获得这些值。

我很欣赏这一点上的任何暗示,也许我错过了一些明显的东西:)

[编辑]:

更准确地说 - 我修补部分请求lib(从' socket'直到urllib2),使用自定义名称解析器 - 它归结为:

self.my_opener = urllib2.build_opener(MyHTTPHandler,MyHTTPSHandler)(urllib2.OpenerDirector instance)

my_opener.open(url)返回一个urllib.addinfourl对象 - 我需要从中提取证书信息,如果它完全可以。

不幸的是,问题并非如此,之后这个问题被标记为重复。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

找到它。

示例:

f=my_opener.open(url)
f.fp._sock.fp._sock._sslobj # here's the ssl object holding the 'issuer' (CA) and 'server' (CN) attributes.

当您使用此问题的修补时,这是有效的:Python 'requests' library - define specific DNS?

这个案子太奇特了,我希望没有其他人永远必须使用它。但是,如果您正在使用请求,在自定义名称解析器之间切换并且必须检查SSL证书CA / CN,我希望这有助于:)