gpt4 book ai didi

python - 如何使用python ssl模块获取证书的签名 key 长度

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:37 25 4
gpt4 key购买 nike

在 python ssl 模块中,我可以使用以下代码片段创建 TLS 连接:

import socket, ssl

context = ssl.SSLContext()
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
context.load_default_certs()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = context.wrap_socket(s, server_hostname='www.verisign.com')
ssl_sock.connect(('www.verisign.com', 443))

我还可以使用 getpeercert 函数获取 perr 的证书,该函数返回一个包含证书信息的对象,如下所示:

{'issuer': ((('countryName', 'IL'),),
(('organizationName', 'StartCom Ltd.'),),
(('organizationalUnitName',
'Secure Digital Certificate Signing'),),
(('commonName',
'StartCom Class 2 Primary Intermediate Server CA'),)),
'notAfter': 'Nov 22 08:15:19 2013 GMT',
'notBefore': 'Nov 21 03:09:52 2011 GMT',
'serialNumber': '95F0',
'subject': ((('description', '571208-SLe257oHY9fVQ07Z'),),
(('countryName', 'US'),),
(('stateOrProvinceName', 'California'),),
(('localityName', 'San Francisco'),),
(('organizationName', 'Electronic Frontier Foundation, Inc.'),),
(('commonName', '*.eff.org'),),
(('emailAddress', 'hostmaster@eff.org'),)),
'subjectAltName': (('DNS', '*.eff.org'), ('DNS', 'eff.org')),
'version': 3}

我需要提取证书的公钥类型和长度(例如 RSA 2048 位)。我怎样才能得到这些信息?

最佳答案

运行 getpeercert(True) 获取完整证书的二进制 DER 格式,然后使用 OpenSSL 加密库,您可以通过这种方式获取 key 类型和长度(假设 der 是二进制 DER):

import OpenSSL

certificate = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, der)
public_key = certificate.get_pubkey()
key_type = 'RSA' if public_key().type() == OpenSSL.crypto.TYPE_RSA else 'DSA'
key_length = public_key.bits()

关于python - 如何使用python ssl模块获取证书的签名 key 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55051380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com