
私の条件が正しいことを願っています。
現在、次の形式の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」がありますが、後者の2つは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オプションも認識します。