Openssl

為什麼 openssl 列印到 stderr 以獲得成功的命令?

  • September 1, 2017

當我使用 openssl 生成 CSR 時,正常輸出到 stderr。我不明白為什麼它不在標準輸出上。我正在編寫一些證書/密鑰對的生成腳本,並希望能夠檢測到錯誤情況,但這會使問題感到困惑。

admin@ip-10-248-185-66:~> openssl req -rand $RAND -new -newkey rsa:2048 -nodes -keyout $KEYPATH -subj /C=US/ST=CA/L=LA/O=TS/OU=server/CN=primary -out $CSRPATH -config $CONFPATH
Generating a 2048 bit RSA private key
.........................+++
..................................+++
writing new private key to '$KEYPATH'
-----
admin@ip-10-248-185-66:~> echo $?
0
admin@ip-10-248-185-66:~> openssl req -rand $RAND -new -newkey rsa:2048 -nodes -keyout $KEYPATH -subj /C=US/ST=CA/L=LA/O=TS/OU=server/CN=primary -out $CSRPATH -config $CONFPATH 2>/dev/null
admin@ip-10-248-185-66:~>

給使用者的消息在 stderr 上進行。進入標準輸出的是命令的結果openssl

預設情況下,除非您使用-inor -out,否則openssl從標準輸入獲取數據(密鑰、證書…)並將數據寫入標準輸出(結果類似於請求 pem 文件)。

在 shell 中,您通常將其用作:

openssl cmd < in.pem > out.pem

您不希望發送給使用者的消息最終out.pem會在 stderr 上發出。

引用自:https://unix.stackexchange.com/questions/131394