栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python使用ssl.getpeercert()从URL获取通用名称

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python使用ssl.getpeercert()从URL获取通用名称

如果您仅想获取CN或其他证书详细信息,那么无论证书验证成功与否,都必须禁用验证。不幸的是

sock.getpeercert()
,设计简单的遗嘱只有在禁用证书验证后才返回空字典。这就是为什么必须使用它
sock.getpeercert(True)
来获取证书的二进制表示并使用OpenSSL.crypto从中提取CN的原因:

import socketimport sslimport OpenSSL.crypto as cryptodst = ('cds.ca',443)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(dst)# upgrade the socket to SSL without checking the certificate# !!!! don't transfer any sensitive data over this socket !!!!ctx = ssl.create_default_context()ctx.check_hostname = Falsectx.verify_mode = ssl.CERT_NonEs = ctx.wrap_socket(s, server_hostname=dst[0])# get certificatecert_bin = s.getpeercert(True)x509 = crypto.load_certificate(crypto.FILETYPE_ASN1,cert_bin)print("CN=" + x509.get_subject().CN)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号