2015-08-26 11 views
1

Я создаю сертификат X509 с использованием phpseclib, и все это кажется прекрасным. После создания сертификата я сохраняю его как файл pkcs12 в PHP, используя закрытый ключ, связанный с моим сертификатом. Однако, как только я прочитал этот файл, закрытый ключ, который я получил, отличается. Разве ключ не должен быть одинаковым?Файл PKCS12 и закрытый ключ - PHP

Например, скажем, я называю:

openssl_pkcs12_export_to_file($cert , $write_loc, $priv_key , $pass); 

Работает отлично, теперь, когда я прочитал этот файл с:

openssl_pkcs12_read($write_loc, $certs, $pass); 

Выходом в $ сертификаты [ 'PKey'] отличается от $ priv_key Я передал метод export_to_file выше.

Несомненно, они должны быть одинаковыми или я смешиваю 2 совершенно разные вещи?

Спасибо!

ответ

2

Я думаю, что будет объяснено в PHP RSA key creation

В принципе, вы используете ключ, который начинается с -----BEGIN RSA PRIVATE KEY----- и ключ вы получаете обратно начинается с -----BEGIN PRIVATE KEY-----.

Первый является закрытым ключом в формате PKCS1, а последний является закрытым ключом в формате PKCS8. Последний имеет тип закрытого ключа, встроенный в базовые 64-кодированные данные, тогда как первый имеет тип закрытого ключа, встроенный в читаемую пользователем строку.

Некоторые версии выхода PHP/OpenSSL ключ и другие выходные PKCS8 ключ PKCS1 ..

+0

Привет, да, вы правы. Я подумал об этом вчера, увидев http://stackoverflow.com/questions/20065304/what-is-the-differences-between-begin-rsa-private-key-and-begin-private-key и сломанную генерацию ключей с phpseclib и перешел к функциям opensl PHP. Даже если я скажу phpseclib, чтобы использовать PKCS8, это не так. Я предполагаю, что это ошибка, которую нужно поднять с ними. –

+0

Он работает, если вы используете новейшую версию. Если вы не думаете, что я это сделаю, я сделаю ставку с вами. $ 10,00 через PayPal говорит, что он работает и что вы либо используете его неправильно, либо используете устаревшую версию. – neubert

+0

Итак, если вы правы, и это ошибка с последней версией (1.0.0), я заплачу вам 10,00 долларов США, и если вы ошибаетесь, вы заплатите мне 10,00 долларов США. – neubert

Смежные вопросы