Невозможно загрузить PEM-закодированный закрытый ключ из Pyjks в объект PKey - PullRequest
0 голосов
/ 17 апреля 2019

Я загружаю объект Pyjks PrivateKeyEntry в PEM, а затем пытаюсь загрузить закодированную в pem строку в объект Pkey. Как вы уже догадались, я пытаюсь экспортировать PrivateKeyEntry вместе с цепочкой сертификатов в файл. У нас есть пользовательский интерфейс, который может импортировать сертификаты и контейнеры p12 в хранилища ключей Java, и я пытаюсь сделать их также загружаемыми.

pkey_pem = pkey_as_pem(keystore_entry)
load_privatekey(crypto.FILETYPE_PEM, pkey_pem)

Однако ошибка, которую я получаю из библиотеки OpenSSL.crypto, по меньшей мере бесполезна:

OpenSSL.crypto.Error: [('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('rsa routines', 'old_rsa_priv_decode', 'RSA lib'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('PEM routines', 'PEM_read_bio_PrivateKey', 'ASN1 lib')]

Пайкс также показывает, что это делается так же: https://github.com/kurtbrose/pyjks/blob/master/tools/readks.py Я могу экспортировать сертификат, как это просто отлично.

РЕДАКТИРОВАТЬ: также пытается с load_privatekey(crypto.FILETYPE_ASN1, pkey_pem._pkey), приводит к похожему загадочному сообщению об ошибке:

{Error}[('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_template_noexp_d2i', 'nested asn1 error'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('rsa routines', 'old_rsa_priv_decode', 'RSA lib'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error')]

1 Ответ

0 голосов
/ 18 апреля 2019

Нашел ошибку (на самом деле надзор звучит лучше) в моем собственном коде, который фактически испортил pkey во время импорта в jks, вот почему это не удалось в OpenSSL.

...