Por que o openssl imprime para o stderr para um comando bem-sucedido?

5

Quando eu gero um CSR usando o openssl, a saída normal vai para o stderr. Eu não entendo porque não está no stdout. Estou gerando scripts para a geração de alguns pares de certificados / chaves e quero poder detectar condições de erro, mas isso confunde o problema.

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:~>
    
por TravisThomas 21.05.2014 / 22:19

1 resposta

6

Mensagens para os usuários vão em stderr. O que vai para stdout é o resultado do comando openssl .

Por padrão, a menos que você use -in ou -out , openssl obtém dados (chaves, certificados ...) do stdin e grava dados no stdout (o resultado como o arquivo pem de solicitação). / p>

Em um shell, você normalmente o usa como:

openssl cmd < in.pem > out.pem

Você não quer que as mensagens para o usuário acabem em out.pem , e é por isso que elas são emitidas no stderr.

    
por 21.05.2014 / 22:47