2

我正在使用 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 向密钥添加密码?

4

1 回答 1

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此外,每当您使用相同的密码加载密钥时,都需要。

于 2015-04-21T05:36:37.477 回答