无法在 OpenSSL 中加载证书

无法在 OpenSSL 中加载证书

我正在尝试使用 OpenSSL 读取由 Google Play 生成的证书。该证书描述如下:

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 不会给我坏证书!

答案1

问题是,我把描述解释为文件中包含完整的 X509 证书.der,但事实上它是仅有的DER 编码的 RSA 公钥。

结果,正确的命令如下:

openssl rsa -inform der -in key.der -pubin

相关内容