개인 키의 비밀번호를 제거하려고 합니다. 수동으로는 쉽습니다. 다음 명령을 실행하고 비밀번호를 입력합니다.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