OpenSSL 1.0.1eの使用エラー?

OpenSSL 1.0.1eの使用エラー?

環境

$ 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

完全な機能スクリプトは次のとおりです。ここ。次のバリエーションが失敗したことがわかったので、クイックテストスクリプトを作成しました。

これは失敗しました

$ 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.

なぜ?

2つのバリエーション(「失敗した」openssl pkcs12コマンドは私が接続したスクリプトのコメントブロックです)の唯一の違いは、パスワードファイルをコマンドに渡す方法ですopenssl pkcs12

パスワードをに送信すると、-passin pass:$(cat ${f_host_passphrase})次のpk12utilコマンドが成功します。

-passin file:${f_host_passphrase}パスワードを送信すると、openssl pkcs12コマンドは成功しますが、pk12utilコマンドは失敗します。

私の考えでは、openssl pkcs12コマンドが解析されているようです。パラメータのパスワードで-passin file:${f_host_passphrase}。残りの世界が使用することを期待しているわけではありません。

関連情報