因此,透過命令列參數傳遞密碼並不是最安全的做法。也就是說,openssl 的文件讓我對如何將密碼參數傳遞給 openssl 指令感到困惑。
這就是我想做的
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d
然後會提示輸入解密金鑰。如果我只是想向命令提供密碼而不嘗試將密碼回顯到文件,我搜索了 openssl 文件和互聯網來嘗試找到答案。我嘗試添加-pass:somepassword
和-pass somepassword
帶引號和不帶引號都無濟於事。
我終於找到了答案,並在其他一些論壇上看到人們有類似的問題,所以我想我可以在這裡為社區發布我的問題和答案。
註:我使用的是 openssl 版本 0.9.8y
答案1
該文件對我來說不是很清楚,但它有答案,挑戰是無法看到範例。
操作方法如下:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword
請注意,命令列命令語法後面總是-pass
跟有一個空格,然後是您提供的密碼短語類型,即pass:
普通密碼短語,然後是冒號後面不帶空格的實際密碼短語。
此外,文件指定您可以透過執行以下操作來提供其他密碼短語來源:
env:somevar
從環境變數取得密碼file:somepathname
從該位置檔案的第一行取得密碼pathname
fd:number
從檔案描述符號取得密碼。stdin
從標準輸入讀取
現在我已經寫下了這個問題和答案,一切似乎都很明顯了。但確實需要一些時間才能弄清楚,而且我看到其他人也花了類似的時間,所以希望這可以減少時間並更快地為其他人提供答案! :)
對於 OpenSSL 1.0.1e,要使用的參數是-passin
或-passout
。所以這個例子是:
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword
答案2
我在範例中使用-passin
和-passout
為兩個文件設定密碼:
openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321
和123
是321
密碼
答案3
目前 Ubuntu 14.04 LTS 附帶 openssl 1.0.1f-1ubuntu2.16
在此版本中要使用的參數是-k
例子:
openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword