환경
$ 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.
왜?
두 변형("실패한" 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}
. 단지 나머지 세계가 사용하기를 기대하는 것이 아닐 뿐입니다...