pkcs8과 결합된 dgst를 사용하여 서명하는 방법

pkcs8과 결합된 dgst를 사용하여 서명하는 방법

pkcs#8 암호화 키가 있습니다. 이 키를 사용하여 사전에 파일의 암호를 해독하지 않고 파일에 서명하고 싶습니다. 내가 달성하고 싶은 것은 단일 openssl 명령을 사용하여 모든 프로세스를 완료하는 것입니다.

이 같은:

openssl dgst -sha256 -sign pkcs8 -inform DER -in private.key -out 
sign_this.txt.signed sign.txt

이 명령은 비밀번호를 묻는 메시지를 표시한 다음 서명을 생성합니다.

openssl 중첩 명령을 사용할 수 있습니까? 이를 수행하는 올바른 방법을 설명하십시오.

감사해요.

답변1

openssl dgst -signwith -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 ...) ...

하나의 명령으로 생각하시는지 모르겠습니다.

관련 정보