无法在某些URL上提取证书组织

问题描述 投票:0回答:2

我希望能够查找一个网站并提供该网站的注册组织。例如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时,可以看到主题字段包含组织。

ssl openssl ssl-certificate rsa x509
2个回答
1
投票

有多个验证类型 X.509证书。这些信息指定哪些信息是证书的一部分(并由颁发证书的CA进行验证)。

  • 域验证(DV):这些证书的主题仅包含一个值:域。这些天来很常见,因为那是您从“让我们加密”中得到的]
  • 组织已验证(OV)
  • :除了域之外,证书的主题还包含有关证书所有者的信息。通常只是一个组织名称,有时也是一个实际名称或组织单位(OU)。

    您有问题的证书,可能是DV证书,其主题中根本没有任何组织信息(您正尝试解析)。


1
投票

microsoft.com上当前使用的证书是:

© www.soinside.com 2019 - 2024. All rights reserved.