3

Я пытаюсь прочитать сертификат, используя OpenSSL, созданный Google Play. Сертификат описывается следующим образом:

Открытый ключ RSA в кодировке Base64, сгенерированный Google Play, имеет двоичный код в формате X.509 subjectPublicKeyInfo DER SEQUENCE.

Я декодировал заданную Base64-кодированную строку в двоичный файл, используя OpenSSL из командной строки, используя это:

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 ответ1

3

Проблема заключалась в том, что я истолковал описание так, что в файле .der содержался целый сертификат X509, хотя на самом деле это был только открытый ключ DER с кодировкой DER.

В результате правильная команда для выдачи оказалась следующей:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .