使用pyopenssl提取证书中的subjectAltName

前面一篇文章说明了如何使用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村中少年原创文章,转载记得加上小尾巴偶,博主链接这里

发布了132 篇原创文章 · 获赞 183 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/javajiawei/article/details/97146669