環境
$ 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}
。残りの世界が使用することを期待しているわけではありません。