Openssl

使用 openssl 從 ssl 密鑰中刪除空密碼

  • February 29, 2016

我有一個用空密碼加密的 openssl 密鑰文件。我正在嘗試使用此命令刪除密碼

openssl rsa -in ca.key -out ca.key.clear

然後,當它要求輸入目前密碼時,我嘗試輸入空密碼,但出現此錯誤:

140592616367776:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:You must type in 4 to 8191 characters

因此,如果密碼少於 4 個字元,我似乎無法刪除它。

如何刪除密碼,最好使用 openssl。

我想出了一個使用etcd-ca工具的解決方法。

mkdir .etcd-ca
mv ca.key .etcd-ca/ca.host.key
touch .etcd-ca/ca.host.crt
chmod a-w .etcd-ca/ca.host.crt
etcd-ca export --insecure ca > ca.tar
tar xf ca.tar

它不漂亮,但它有效。不過,我仍然不知道如何使用 openssl 來實現這一點。

確實,您無法獲取PEM_bytes_read_bioand 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

我的建議:下次不要使用空密碼 :-)

引用自:https://serverfault.com/questions/703993