Skip to main content
 首页 » 编程设计

python之如何检查 Python,是否与证书关联的 key

2025年05月04日13lhb25

我知道证书和私钥中的 block 模数如果相关则必须相同。但是如何使用 Python 来检查呢?我正在寻找 OpenSSL 库的解决方案,但没有找到。请告诉我解决方案,如何理解与使用 Python 关联的证书和私钥。如果私钥未以 PEM 格式加密,则为 PEM 格式的证书。最好使用标准库。不通过子进程使用 OpenSSL
谢谢。

请您参考如下方法:

def check_associate_cert_with_private_key(cert, private_key): 
    """ 
    :type cert: str 
    :type private_key: str 
    :rtype: bool 
    """ 
    try: 
        private_key_obj = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, private_key) 
    except OpenSSL.crypto.Error: 
        raise Exception('private key is not correct: %s' % private_key) 
 
    try: 
        cert_obj = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) 
    except OpenSSL.crypto.Error: 
        raise Exception('certificate is not correct: %s' % cert) 
 
    context = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) 
    context.use_privatekey(private_key_obj) 
    context.use_certificate(cert_obj) 
    try: 
        context.check_privatekey() 
        return True 
    except OpenSSL.SSL.Error: 
        return False 

来源:http://docs.ganeti.org/ganeti/2.14/html/design-x509-ca.html#verify-whether-x509-certificate-matches-private-key