如何检查Python,是否与证书相关联的密钥

Gre*_*eev 1 python ssl openssl python-2.7

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

小智 5

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
Run Code Online (Sandbox Code Playgroud)

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