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.

왜?

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

관련 정보