使用openssl从ssl密钥中删除空的密码

我有一个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_bioPEM_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议:下次不要使用空密码:-)

这是我如何解决这个问题..

  1. 将新密码添加到最初创build的没有密码的私钥。

     openssl rsa -des3 -in your.key -out your.encrypted.key mv your.encrypted.key your.key 

这会提示您input新的密码。

  1. 现在删除密码如下:

     openssl rsa -in your.key -out your.key_NO_PASSPHRASE.pem 
  2. 这将提示您input上面第1步中指定的密码,然后将其从密钥中删除。

这对我和Apache开始没有任何错误。 (我假设这就是为什么你需要删除它在第一位:))