包装套接字时使用的自签名证书

时间:2017-11-16 20:49:12

标签: python python-3.x python-cryptography

我试图在ssl握手中使用使用加密模块生成的自签名x509证书。我按the documentation中的规定生成了PEM文件的证书和密钥,并使用以下函数将它们写入文件:

def write_key_and_cert(self, certname="cert.pem", keyname="key.pem"):
    with open(certname, "wb") as f:
        f.write(self.cert.public_bytes(serialization.Encoding.PEM))
    with open(keyname, "wb") as f:

    f.write(self.private_key.private_bytes(encoding=serialization.Encoding.PEM,
                                           format=serialization.PrivateFormat.TraditionalOpenSSL,
                                           encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase"),),)

在套接字包装过程中出现问题,服务器无法使用certfile和密钥文件,导致挂起。我认为这是由于密钥文件被加密(ssl包装不解密密钥文件)。有没有办法使用加密模块生成的certfile / keyfile,如果有,怎么做?

1 个答案:

答案 0 :(得分:2)

通过在加载证书链时创建上下文并指定密码来解决此问题:

context = ssl.create_default_context()
context.load_cert_chain(certfile=self.certfile, keyfile=self.keyfile, password=b"passphrase")

这使得ssl模块可以解密密钥文件并正确加载。