EC 공개 키를 SubjectPublicKeyInfo 형식에서 "레거시" 형식으로 변환

EC 공개 키를 SubjectPublicKeyInfo 형식에서 "레거시" 형식으로 변환

내 조건이 정확하길 바랍니다.

현재 다음 형식의 EC 공개 키가 있습니다.

-----BEGIN PUBLIC KEY-----
xxxxx
-----END PUBLIC KEY-----

내가 이해하는 것은 SubjectPublicKeyInfo형태입니다. 다음과 같은 형식으로 변환하고 싶습니다.

-----BEGIN EC PUBLIC KEY-----
xxxxx
-----END EC PUBLIC KEY-----

유사 openssl하거나 유사한 명령을 사용하십시오. RSAPublicKey_{in|out}명령어를 못찾은 것 같네요 openssl ec. 공개 키를 DER형식 으로 변환하고 싶습니다 PEM.

다른 방법이 있나요?

답변1

OpenSSL은 "BEGIN EC PUBLIC KEY" 형식을 지원하지 않으며 (AFAIK) 그러한 형식은 존재하지 않습니다. RSA에는 기본적으로 PEM으로 인코딩된 PKCS#1 구조인 "레거시" 공개 키 형식("BEGIN RSA PUBLIC KEY")이 있습니다. 이후 표준에서는 알고리즘 독립적인 방식(SubjectPublicKeyInfo)으로 공개 키를 인코딩하는 방법을 정의했기 때문에 항상 "레거시" 형식 버전이 있었던 것은 아닙니다.

openssl pem 헤더 파일(include/openssl/pem.h)을 보면 알려진 OpenSSL PEM 유형을 확인할 수 있습니다. "EC PUBLIC KEY" 항목이 없다는 것을 알 수 있습니다. "RSA PUBLIC KEY", "DSA PUBLIC KEY" 및 "ECDSA PUBLIC KEY"가 있지만 후자의 두 가지는 OpenSSL 코드베이스의 어느 곳에서도 사용되지 않습니다(즉, 헤더 파일에만 존재합니다).

개인 키는 "레거시" 형식으로 제공됩니다. PKCS8 개인 키를 레거시 형식으로 변환하려면 다음을 사용하세요.

openssl ec -in p8file.pem -out tradfile.pem

ec 명령은 "-inform DER" 및 "-outform DER" 옵션도 인식합니다. 예를 들어 DER PKCS8 개인 키 파일을 기존 PEM으로 변환하려면 다음을 사용할 수 있습니다.

openssl ec -inform DER -in p8file.der -out tradfile.pem

또는 기존 사용을 위해 PEM PKCS8 개인 키 파일을 DER로 변환합니다.

openssl ec -in p8file.pem -outform DER -out tradfile.der

또는 기존 형식의 PKCS8 개인 키를 사용할 수 있습니다.

openssl pkcs8 -topk8 -nocrypt -in tradfile.pem -out p8file.pem

위의 pkcs8 명령은 -inform 및 -outform 옵션도 인식합니다.

관련 정보