我知道证书和私钥中的 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
