zoukankan      html  css  js  c++  java
  • python 读取域名信息

    #!/usr/bin/env python
    # _*_coding:utf-8_*_
    import OpenSSL
    from OpenSSL import crypto
    from dateutil import parser
    
    
    def get_cert_detail(cert_file):
        """
        获取证书信息
        :param cert_file:
        :return:
        """
        cert = crypto.load_certificate(crypto.FILETYPE_PEM, open(cert_file).read())
        subject = cert.get_subject()
        issuer = cert.get_issuer()
        datetime_struct_before = parser.parse(cert.get_notBefore().decode("UTF-8"))
        datetime_struct_after = parser.parse(cert.get_notAfter().decode("UTF-8"))
        extensions_domain_list = []
        for i in cert.to_cryptography().extensions:
            if i.oid.dotted_string == "2.5.29.17":
                extensions_domain_list = [i.value for i in i.value]
        return {
            # 证书版本
            "version": cert.get_version() + 1,
            # 证书序列号
            "serial_number": hex(cert.get_serial_number()),
            # 证书中使用的签名算法
            "signature": cert.get_signature_algorithm().decode("UTF-8"),
            # 颁发者
            "common_name": issuer.commonName,
            # 有效期开始
            "before_datetime": datetime_struct_before.strftime('%Y-%m-%d %H:%M:%S'),
            # 有效期结束
            "after_datetime": datetime_struct_after.strftime('%Y-%m-%d %H:%M:%S'),
            # 证书是否过期
            "is_expired": bool(1 - cert.has_expired()),
            # 公钥长度
            "pubkey_count": cert.get_pubkey().bits(),
            # 可以使用的域名列表
            "extensions_domains": extensions_domain_list
        }
    
  • 相关阅读:
    php hook example
    sql 建立数据库,表格,索引,主键
    js 高级函数 之示例
    js 事件
    DOM 操作内容 innerText/innerHTML
    DOM 之 document 查找元素方法
    BOM 之 screen history
    Hadoop源码篇--Client源码
    Spark算子篇 --Spark算子之combineByKey详解
    Pandas库的使用--Series
  • 原文地址:https://www.cnblogs.com/lmx1002/p/11459610.html
Copyright © 2011-2022 走看看