我有一个循环,每隔30秒运行一次,连接到SSL服务器(reactor.connectSSL()),发送消息(self.transport.write(msg))然后断开连接(self.transport.loseConnection( ))。
问题是每次循环尝试连接时都会询问“输入PEM密码”。是否可以只输入一次?
答案 0 :(得分:5)
根据Mikael的建议,您可以从密钥中删除密码短语。请注意,这会带来严重的安全风险。
要从密钥中删除密码短语,请执行以下步骤。假设您有一个名为foo.pem
的文件,其中包含以下内容:
-----BEGIN ENCRYPTED PRIVATE KEY-----
...
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
执行以下命令:
openssl rsa -in foo.pem -out foo_unencrypted.pem
系统会提示您输入密码短语,然后收到包含以下内容的文件foo_unencrypted.pem
:
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
此文件缺少上面的BEGIN CERTIFICATE ---- END CERTIFICATE
部分,因此请将其从foo.pem
复制粘贴到foo_unencrypted.pem
的末尾:
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
如果您使用文件foo_unencrypted.pem
,现在将不再提示您输入“输入PEM密码短语”。
答案 1 :(得分:1)
我最终发现了这篇帖子:Auto enter pass phrase in case of Python ssl Client/Server,他们建议您从密钥中删除密码短语。
答案 2 :(得分:0)
我试图运行该命令,但没有成功。 仍然我的应用程序每次启动时都询问PEM副词。
$ openssl rsa -in chatbot.key -out chatbot.unprotectedkey
Enter pass phrase for chatbot.key:
unable to load Private Key
33432:error:0607607D:digital envelope routines:PKCS5_v2_PBE_keyivgen:unsupported prf:p5_crpt2.c:230:
33432:error:06074078:digital envelope routines:EVP_PBE_CipherInit:keygen failure:evp_pbe.c:101:
33432:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:p12_decr.c:83:
33432:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:123:
33432:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:125: