gpt4 book ai didi

python - 以下哪个 SSL 证书版本是正确的?

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

我对 SSL 证书不是很熟悉。我尝试使用两种不同的函数来检索 SSL 证书版本。一种使用 OpenSSL 库,另一种使用内置方法。他们为同一个域名返回不同的版本号。哪一个是正确的?

这是 Python 3 的代码。

# -*- coding: utf-8 -*-
import socket
import OpenSSL
import ssl

def get_ssl_cert1(host, port=443):
conn = ssl.create_connection((host, port))
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
sock = context.wrap_socket(conn, server_hostname=host)
certificate = ssl.DER_cert_to_PEM_cert(sock.getpeercert(True))
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, certificate)
print("Certificate version from method 1: ", x509.get_version())

def get_ssl_cert2(host, port=443):
ctx = ssl.create_default_context()
s = ctx.wrap_socket(socket.socket(), server_hostname=host)
s.connect((host, port))
cert = s.getpeercert()
print("Certificate version from method 2: ", cert['version'])

if __name__ == "__main__":
host = 'www.google.com'
get_ssl_cert1(host)
get_ssl_cert2(host)

结果:

Certificate version from method 1:  2
Certificate version from method 2: 3

我希望结果是一样的。

最佳答案

方法 2 显示实际的 x509 版本,而方法 1 显示基于零的 x509 版本,其中 0=v1、1=v2、2=v3.. 因此在实践中,它们都显示使用的是版本 3。您可以使用 openssl x509 -text -in YOURCERT.pem 自行尝试, 你会得到类似

Certificate:
Data:
Version: 3 (0x2)

您可以看到,给出了版本 3,但括号中还有一个基于零基版本控制的十六进制值 (2)。这只是您的哪个库使用哪种方法的问题

关于python - 以下哪个 SSL 证书版本是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55625234/

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