pkcs#8 암호화 키가 있습니다. 이 키를 사용하여 사전에 파일의 암호를 해독하지 않고 파일에 서명하고 싶습니다. 내가 달성하고 싶은 것은 단일 openssl 명령을 사용하여 모든 프로세스를 완료하는 것입니다.
이 같은:
openssl dgst -sha256 -sign pkcs8 -inform DER -in private.key -out
sign_this.txt.signed sign.txt
이 명령은 비밀번호를 묻는 메시지를 표시한 다음 서명을 생성합니다.
openssl 중첩 명령을 사용할 수 있습니까? 이를 수행하는 올바른 방법을 설명하십시오.
감사해요.
답변1
openssl dgst -sign
with -keyform der
(not -inform
)은 명시적인 개인 키만 허용합니다. 그러나 이 명령은 기존 일반 텍스트 또는 암호화, pkcs8 일반 텍스트 또는 암호화 등 4가지 PEM 형식 모두의 개인 키를 허용할 수 있습니다. 물론, 암호화 키를 사용하려면 비밀번호를 제공해야 합니다. "미리 암호 해독하지 않음"이 이를 제외한다는 의미는 아닙니다.
명령줄 작업은 pkcs8 rsa pkey
단순히 암호를 해독한 다음 다시 암호화하여 암호화된 개인 키를 DER에서 PEM으로 변환하지만(둘 다 암호 필요) 다음을 사용하여 직접 수행할 수 있습니다.
printf '%s\n' "-----BEGIN ENCRYPTED PRIVATE KEY-----" >tempkey.pem
openssl base64 <pk8derfile >>tempkey.pem
printf '%s\n' "-----END ENCRYPTED PRIVATE KEY-----" >>tempkey.pem
# variants with sed, awk, perl, etc are possible if better for you
# and of course change filename(s) if you like
openssl dgst -sha256 -sign tempkey.pem <data -out signature
Unix의 일부 쉘(특히 bash)에서는 다음을 통해 한 번에 이 작업을 수행할 수 있습니다.
openssl dgst -sha256 -sign <(printf ... base64 ... printf ...) ...
하나의 명령으로 생각하시는지 모르겠습니다.