Google Playで生成されたOpenSSLを使用して証明書を読み取ろうとしています。証明書は次のとおりです。
Google Playによって生成されるBase64でエンコードされたRSA公開鍵は、バイナリエンコードされたX.509 subjectPublicKeyInfo DER SEQUENCE形式です。
これを使用して、コマンドラインからOpenSSLを使用して、指定されたBase64エンコード文字列をバイナリにデコードしました。
openssl enc -base64 -d -A <<< THE_KEY_CONTENT > key.der
バイナリファイルは妥当なようです。 294バイトで、最初のバイトは0x30
はSEQUENCE
と一致すると思います。
結果のバイナリファイルを使用して、次のコマンドを実行しようとします。
openssl x509 -inform der -in key.der -out key.pem
しかし、OpenSSLから次のエラーが発生します。
unable to load certificate 140736245019656:error:0D0680A8:asn1
encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1199:140736245019656:error:0D06C03A:asn1
encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:767:140736245019656:error:0D08303A:asn1
encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested
asn1 error:tasn_dec.c:699:Field=serialNumber, Type=X509_CINF 140736245019656:error:0D08303A:asn1
encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:699:Field=cert_info, Type=X509
この証明書をロードするために欠けているものはありますか?私はGoogleが私に悪い証明書を与えないだろうと思います!
問題は、実際にonlyであるにもかかわらず、.der
ファイル内にX509証明書全体が含まれていることを意味するように説明を解釈したことでした。 DERでエンコードされたRSA公開鍵。
その結果、発行する正しいコマンドは次のようになります。
openssl rsa -inform der -in key.der -pubin