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

标签 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()

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

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

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

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

最佳答案

您离答案不远了。要导出您编写的 key :

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.

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

关于python - 我可以使用带有密码的 pyOpenSSL 生成私钥吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763401/

相关文章:

python - 如何加速 Flask 应用程序的 JSON 速度?

python - np.where 用字符串创建缺失值

openssl - OpenSSL 字节序列是小端还是大端?

python - 属性错误 : 'Context' object has no attribute 'wrap_socket'

python - 有效地按元素比较numpy数组与自身

python - 使用 For 循环参数在 Pandas Dataframe 上应用 Zip 函数

c - openSSL key block 访问功能?

ssl - 没有可用于特定 ECDSA 证书的密码

ssl - 在 OpenSSL 中握手后查找 SSL 版本

python-2.7 - 使用 python 的 openssl 模块时,何时将 TLSv1.2 密码添加为默认选择