【问题标题】:Can I generate a private key with pyOpenSSL with a passphrase我可以使用带有密码的 pyOpenSSL 生成私钥吗
【发布时间】:2023-06-13 23:18:01
【问题描述】:

我正在使用 pyOpenSSL 大量生成 CSR。

我需要生成一个受密码保护的私钥文件。

代码sn-p:

key = crypto.PKey()
key.generate_key(type, bits)
f = open(_keyfile, "w"
f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key))
f.close()

我在文档中找不到任何地方可以确认我是否可以使用密码生成密钥。

如果我在命令行上使用 openssl,我会执行以下操作:

${OPENSSLCMD} req -new -newkey rsa:"${KEYSIZE}" -passout pass:"${DBPASS}" -out "${DBFILE}" -keyout "${DBKEYFILE}" -subj "${CERTDN}" -config "${OPENSSLCONFIG}"

有没有办法使用 pyOpenSSL 为密钥添加密码?

【问题讨论】:

    标签: python openssl pyopenssl passphrase


    【解决方案1】:

    你离答案不远了。要导出您编写的密钥:

    f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key))
    

    由于OpenSSL.crypto.dump_privatekey 函数接受可选参数passphrase,您可以这样做:

    f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key, passphrase='your_passphrase_here'))
    

    已编辑:

    我在文档中找不到任何地方可以确认我是否可以使用密码生成密钥。

    只是为了澄清在生成密钥时不涉及密码,但在导出密钥时是这样。此外,每当您使用 OpenSSL.crypto.load_privatekey 加载密钥时,都需要使用相同的密码。

    【讨论】: