Неможливо завантажити сертифікат у OpenSSL


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який я вважаю, збігається з a 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 не видасть мені поганого сертифіката!

Відповіді:


3

Проблема полягала в тому, що я інтерпретував опис, маючи на увазі, що у .derфайлі міститься весь сертифікат X509, але насправді це був лише кодований DER код відкритого ключа RSA.

У результаті правильною командою для видачі виявилася така:

openssl rsa -inform der -in key.der -pubin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.