$ cat /etc/*-release
CentOS release 6.5 (Final)
$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
$ tr -dc A-Za-z0-9 </dev/random | head -c 24 > ${f_host_passphrase}
$ echo -e "\n" >> ${f_host_passphrase}
$ openssl genpkey ... -pass file:${f_host_passphrase} -out ${f_host_key}
$ openssl req ... -key ${f_host_key} -passin file:${f_host_passphrase} \
-out ${f_host_req}
$ openssl ca ... -in ${f_host_req} -out ${f_host_cert}
$ openssl pkcs12 \
-export \
-inkey ${f_host_key} \
-passin pass:$(cat ${f_host_passphrase}) \
-in ${f_host_cert} \
-name "${l_ds_cert_name}" \
-password file:${f_host_passphrase} \
-out ${f_host_p12}
...
$ pk12util -i ${f_host_p12} \
-w ${f_host_passphrase} \
-d ${l_sql_prefix}${d_nssdb} \
-k ${f_host_passphrase}
pk12util: PKCS12 IMPORT SUCCESSFUL
O script completo e funcional é aqui . Eu escrevi o script para testes rápidos porque, acontece que essa próxima variação falha.
$ tr -dc A-Za-z0-9 </dev/random | head -c 24 > ${f_host_passphrase}
$ echo -e "\n" >> ${f_host_passphrase}
$ openssl genpkey ... -pass file:${f_host_passphrase} -out ${f_host_key}
$ openssl req ... -key ${f_host_key} -passin file:${f_host_passphrase} \
-out ${f_host_req}
$ openssl ca ... -in ${f_host_req} -out ${f_host_cert}
$ openssl pkcs12 \
-export \
-inkey ${f_host_key} \
-passin file:${f_host_passphrase} \
-in ${f_host_cert} \
-name "${l_ds_cert_name}" \
-password file:${f_host_passphrase} \
-out ${f_host_p12}
...
$ pk12util -i ${f_host_p12} \
-w ${f_host_passphrase} \
-d ${l_sql_prefix}${d_nssdb} \
-k ${f_host_passphrase}
pk12util: PKCS12 decode not verified: SEC_ERROR_BAD_PASSWORD: The security password entered is incorrect.
A única diferença entre as duas variações (e o comando "failed" openssl pkcs12
é um bloco de comentário no script ao qual eu me vinculei) é como eu passo o arquivo de senha para o comando openssl pkcs12
.
Se eu enviar a senha como -passin pass:$(cat ${f_host_passphrase})
, o seguinte comando pk12util
será bem-sucedido.
Se eu enviar a senha como -passin file:${f_host_passphrase}
, o comando openssl pkcs12
ainda será bem-sucedido, mas o comando pk12util
falhará.
Meu palpite é que o comando openssl pkcs12
está analisando algo como a senha do argumento -passin file:${f_host_passphrase}
. Apenas não o que o resto do mundo está esperando para usar ...
Tags openssl