예상 스크립트: 개인 키의 비밀번호 제거

예상 스크립트: 개인 키의 비밀번호 제거

개인 키의 비밀번호를 제거하려고 합니다. 수동으로는 쉽습니다. 다음 명령을 실행하고 비밀번호를 입력합니다.openssl rsa <newkey.pem > newkey-no-password.pem

실제로 비밀번호를 입력할 필요가 없도록 예상 스크립트에서 이 작업을 수행하려고 합니다. 제가 작성한 코드는 다음과 같습니다.

#!/usr/bin/expect -f
set PASSWORD myPassword

spawn openssl rsa <newkey.pem > newkey-no-pass.pem
expect "Enter pass phrase:"
send "$PASSWORD\r"
expect eof

다음은 스크립트를 실행할 때 얻는 출력입니다.

[me@mymachine]# ./test.exp
spawn openssl rsa <newkey.pem > newkey-no-pass.pem
unknown option <newkey.pem
rsa [options] <infile >outfile
... all the options for rsa command ...

퍼팅이나 사이에 넣어보았 <newkey.pem으나 소용이 없었습니다.'"

내가 뭘 잘못하고 있고 어떻게 해결할 수 있나요?

답변1

spawn나는 명령이 쉘 리디렉션을 해결한다고 생각하지 않습니다 <. 다음을 사용하여 쉘에 전달하여 작동하게 할 수 있습니다 sh -c.

#!/usr/bin/expect -f
set PASSWORD myPassword

spawn sh -c "openssl rsa <newkey.pem > newkey-no-pass.pem"
expect "Enter pass phrase:"
send "$PASSWORD\r"
expect eof

이것은 나에게 효과적입니다.

# expect -f kkf
spawn sh -c openssl rsa <newkey.pem > newkey-no-pass.pem
Enter pass phrase:myPassword
writing RSA key

답변2

이를 사용하여 개인 키를 추출하고 pkcs12 파일에서 비밀번호를 제거합니다.

openssl pkcs12 -in myFile.p12 -nocerts -out myFile.priv.password.pem -passin pass:SomePassword -passout pass:SomeOtherPassword

openssl pkcs8 -topk8 -nocrypt -inform pem -in myFile.priv.password.pem -passin pass:SomeOtherPassword -outform pem -out myFile.priv.pem

내 추측 중 일부는 다음과 같습니다. 이 방법이 도움이 될 것입니다.

openssl rsa -in newkey.pem -out newkey-no-pass.pem -passin pass:SomePassword

명령줄에 비밀번호를 입력하지 않으려면 파일을 사용할 수 있습니다(액세스 제한).

openssl rsa -in newkey.pem -out newkey-no-pass.pem -passin file:PasswordFile.txt

관련 정보