내 조건이 정확하길 바랍니다.
현재 다음 형식의 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 옵션도 인식합니다.