前面一篇文章说明了如何使用pyopenssl对于证书进行解析,主要解析数字证书的subject部分。本文介绍一下如何解析证书的subjectAltName。
证书中的subjectAltName是非常重要的一个信息,其作为证书扩展的一部分,表示的是能够使用该证书的域名。Python 的OpenSSL 模块提供了证书解析的功能。在这篇文章演示了如何提取证书subject中的一些信息,包括o,ou,st等等。但是openssl模块没有提供直接提取扩展中的subjectaltname功能。因为subjectAltName是证书的扩展部分内容,虽然基本每个证书都会有,但并不是必须的内容,同时扩展部分个数也是因证书而异的。庆幸的是pyopenssl提供了获取扩展部分item的个数函数get_extension_count()
,以及按照索引获取item内容的函数get_extension(index)
。结合这两个函数可以使用如下的代码获取subjectAltName以及具体的item内容。
cert = crypto.load_certificate(crypto.FILETYPE_ASN1, open(certName).read())
for index in range(cert.get_extension_count()):
ext = cert.get_extension(index)
if 'subjectAltName' == ext.get_short_name():
#print(str(ext))
san = str(ext)
break
else:
pass
本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里。