我希望能够查找一个网站并提供该网站的注册组织。例如get_company(“ google.com”)-> Google LLC。但是,某些在chrome中打开并签名并正确显示其证书的网站无法正常工作。例如,“ microsoft.com”是无效的。我如何查找其他人?
import ssl
import socket
import OpenSSL
def get_certificate(host, port=443, timeout=10):
context = ssl.create_default_context()
conn = socket.create_connection((host, port))
sock = context.wrap_socket(conn, server_hostname=host)
sock.settimeout(timeout)
try:
der_cert = sock.getpeercert(True)
finally:
sock.close()
return ssl.DER_cert_to_PEM_cert(der_cert)
def get_company(url):
certificate = get_certificate(url)
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, certificate)
return dict(x509.get_subject().get_components())[b'O']
编辑:只是为了澄清一下,我对诸如“加密”之类的权威机构制作的证书不感兴趣,可以对其进行过滤。它们与问题无关。我张贴的特定示例是因为当我在Google Chrome中访问microsoft.com时,可以看到主题字段包含组织。
有多个验证类型 X.509证书。这些信息指定哪些信息是证书的一部分(并由颁发证书的CA进行验证)。
您有问题的证书,可能是DV证书,其主题中根本没有任何组织信息(您正尝试解析)。
microsoft.com
上当前使用的证书是: