使用python打开密码保护的.pem和.crt文件

z0qdvdin  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(189)

我使用以下命令创建了私钥和公钥:

.....
 openssl genrsa -aes256 -passout pass:password -out key.pem
 4096 &&
openssl rsa -in key.pem -passin pass:password -pubout -out 
 pukey.pub

然后使用以下命令创建cert文件:

openssl req -new -key key.pem -passin pass:password -x509 -out 
 keycert.pem -days 365000 -subj '/CN=localhost'

所以我已经用密码保护了key.pem,我想在我的python程序中打开它,我如何指定密码来打开key.pem文件和keycert.pem文件呢?

with open('../key.pem', 'rb') as f:
   private_key = f.read()
with open('../keycert.pem', 'rb') as f:
   certificate_chain = f.read()

当我运行这个程序时,我得到错误:

E1117 13:57:03.515461744   70812 ssl_transport_security.cc:854] 
Invalid private key.

这表明它无法打开密钥.pem文件,因为它受密码保护

dgiusagp

dgiusagp1#

使用以下行:

with open('key.pem', 'rb') as f:
    private_key=load_pem_private_key(f.read(), password="1".encode(),
                                              backend=default_backend())
    pem =private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption()
    )

解决了该问题,首先加载私钥,然后将其转换为字节。

相关问题