我有一个每 30 秒运行一次的循环,连接到 SSL 服务器 (reactor.connectSSL()),发送消息 (self.transport.write(msg)),然后断开连接 (self.transport.loseConnection())。
问题是每次循环尝试连接时都会询问“输入 PEM 密码”。是否可以只输入一次?
我有一个每 30 秒运行一次的循环,连接到 SSL 服务器 (reactor.connectSSL()),发送消息 (self.transport.write(msg)),然后断开连接 (self.transport.loseConnection())。
问题是每次循环尝试连接时都会询问“输入 PEM 密码”。是否可以只输入一次?
正如 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 密码”。
我最终找到了这篇文章:Auto enter pass phrase in case of Python ssl Client/Server,他们建议您从密钥中删除密码。
我试图运行该命令,但它没有这样做。而且我的应用程序每次启动时都会询问 PEM para 短语。
$ 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: