암호 해독을 위해 명령 줄을 통해 openssl에 암호 인수를 사용하는 방법


54

따라서 명령 줄 인수를 통해 암호를 전달하는 것이 가장 안전한 방법은 아닙니다. 즉, openssl에 대한 문서는 openssl 명령에 암호 인수를 전달하는 방법에 대해 혼란 스러웠습니다.

여기 내가하려는 일이 있습니다.

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

그러면 암호 해독을위한 패스 키를 묻는 메시지가 나타납니다. 암호를 파일에 에코하지 않고 명령에 암호를 제공하려는 경우 openssl 문서와 인터 웹을 검색하여 답을 찾으려고 시도했습니다. 나는 추가 시도 -pass:somepassword-pass somepassword와 아무 소용 따옴표없이 모두.

나는 마침내 그 답을 알아 내고 다른 포럼에서 사람들이 비슷한 질문을 보았 기 때문에 커뮤니티에 대한 질문을 게시하고 여기에 답할 것이라고 생각했습니다.

참고 : openssl 버전 0.9.8y를 사용하고 있습니다.

답변:


108

문서는 나에게 분명하지 않았지만 대답이 있었지만 문제는 예제를 볼 수 없었습니다.

방법은 다음과 같습니다.

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

명령 행 명령 구문은 항상 -pass공백과 그 뒤에 제공하는 암호 유형 (예 pass:: 일반 암호 구문 및 공백없이 콜론 뒤의 실제 암호 구문)이 뒤 따릅니다 .

또한 설명서에는 다음을 수행하여 다른 암호 문구 소스를 제공 할 수 있다고 지정되어 있습니다.

  • env:somevar 환경 변수에서 비밀번호를 얻으려면
  • file:somepathname 위치의 파일의 첫 번째 줄에서 비밀번호를 가져옵니다. pathname
  • fd:number 파일 디스크립터 번호에서 비밀번호를 가져옵니다.
  • stdin 표준 입력에서 읽기

이 질문과 답변을 작성 했으므로 모든 것이 분명해 보입니다. 그러나 확실히 알아내는 데 약간의 시간이 걸렸으며 다른 사람들도 비슷한 시간이 걸리는 것을 보았 으므로이 시간을 줄이고 다른 사람들에게 더 빨리 대답 할 수 있기를 바랍니다. :)

OpenSSL 1.0.1e에서 사용할 매개 변수는 -passin또는 -passout입니다. 따라서이 예는 다음과 같습니다.

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword


Passin 또는 Passout 사용의 차이점은 무엇입니까? -하! stdin vs stdout은 물론 찾아 보았습니다!
dtmland

(뿐만 아니라 ) 대부분의 openssl 명령에 적용되는 암호 옵션에 대한 설명서 는 웹 의 'OPTIONS' 에있는enc openssl (1) 매뉴얼 페이지에 있습니다. 그러나 나는 -passin / out에 대한 마지막 비트를 믿지 않습니다. 다른 명령은 명령을 사용하지만 업스트림 소스 사용 에서 직접 빌드 하거나 1. 맨 페이지 에 문서화 된 1.0.1e를 포함하여 본 모든 버전에서 사용합니다 . opensslrsa dsa ec pkey pkcs8 pkcs12 req caenc-pass-k -kfileenc
dave_thompson_085

방법에 대한 openssl dgst명령? 명령 행에서 암호를 어떻게 입력합니까?
frakman1

4
btw -passin는 입력 인증서의 암호를 제공하는 데 사용되며 -passout새로 생성 된 인증서
drmad

7

예를 들어 두 파일 모두에 암호를 사용 -passin하고 -passout설정했습니다.

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

어디에 123그리고 321암호


5

현재 Ubuntu 14.04 LTS는 openssl 1.0.1f-1ubuntu2.16과 함께 제공됩니다

이 버전에서 사용할 매개 변수는 -k

예:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

1
귀하의 예에서 -k는 openssl 'enc'명령에 사용할 수있는 옵션입니다 (try man enc). 이것은 일반적인 옵션이 아닙니다. 당신이 보면 man openssl당신은 '패스 프레이즈 옵션'제목 아래에 나타납니다, 일반 옵션은 무엇입니까; pass:password, env:var, file:pathname, fd:number또는 stdin, 이전 응답 한 바와 같이.
sibaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.