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

Can I generate a private key with pyOpenSSL with a 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 为密钥添加密码?

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

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'))

已编辑:

I can't find anywhere in the docs that confirms whther or not I can generate a key with a passphrase.

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