Openssl
使用 openssl 從 ssl 密鑰中刪除空密碼
我有一個用空密碼加密的 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_bio
andPEM_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
我的建議:下次不要使用空密碼 :-)