我可以使用带密码的pyOpenSSL生成私钥

时间:2015-04-21 05:08:34

标签: python openssl pyopenssl passphrase

我正在使用pyOpenSSL来大规模生成CSR。

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

代码段:

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为密钥添加密码?

1 个答案:

答案 0 :(得分: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加载密钥,都需要相同的密码。