我有一个openssl密钥文件使用空密码encryption。 我正尝试使用此命令删除密码
openssl rsa -in ca.key -out ca.key.clear
然后我尝试input空的密码,当它要求当前的密码,但我得到这个错误:
140592616367776:错误:28069065:lib(40):UI_set_result:结果太小:ui_lib.c:869:必须input4到8191个字符
所以,如果它less于4个字符,我似乎无法删除密码短语。
如何删除密码,理想情况下使用openssl。
我想出了一个使用etcd-ca工具的解决方法。
mkdir .etcd-ca mv ca.key .etcd-ca/ca.host.key touch .etcd-ca/ca.host.crt chmod aw .etcd-ca/ca.host.crt etcd-ca export --insecure ca > ca.tar tar xf ca.tar
这不是很漂亮,但它的工作。 虽然我仍然不知道如何使用openssl来实现这个function。
这是真的,你不能得到PEM_bytes_read_bio和PEM_do_header ,这是传统的PEM解密结束,采取零长度的口令,没有。
有一个解决方法,但你可能不喜欢它 :
# assumes DES3 (aka DES-EDE3) CBC as in the example # changes and/or additional logic needed for other ciphers # get the IV from the file header iv=`awk <silly -F, '/DEK-Info:/{print $2}'` # use enc to do EVP_BytesToKey with salt=IV and just print result key=`openssl enc -des3 -k '' -S $iv -P |awk -F= '/^key/{print $2}'` # get body of the file, debase64 and decrypt # note openssl silently drops dash-END line, another debase64 may not <silly sed '1,/^$/d' |openssl base64 -d |openssl enc -des3 -d -K $key -iv $iv >sillyd # sillyd is now unencrypted DER "legacy" (PKCS#1) # and can be read by "openssl rsa <sillyd -inform der" # but since we're on a roll let's do PEM too! (echo -----BEGIN RSA PRIVATE KEY-----;openssl base64 <sillyd;\ echo -----END RSA PRIVATE KEY-----) >sillyp
我的build议:下次不要使用空密码:-)
这是我如何解决这个问题..
将新密码添加到最初创build的没有密码的私钥。
openssl rsa -des3 -in your.key -out your.encrypted.key mv your.encrypted.key your.key
这会提示您input新的密码。
现在删除密码如下:
openssl rsa -in your.key -out your.key_NO_PASSPHRASE.pem
这将提示您input上面第1步中指定的密码,然后将其从密钥中删除。
这对我和Apache开始没有任何错误。 (我假设这就是为什么你需要删除它在第一位:))