Я создаю сертификат X509 с использованием phpseclib, и все это, кажется, хорошо. Создав сертификат, я сохраняю его как файл pkcs12 в PHP, используя закрытый ключ, связанный с моим сертификатом. Однако когда я читаю этот файл, закрытый ключ, который я получаю, становится другим. Разве ключ не должен быть таким же?
Например, скажем, я звоню:
openssl_pkcs12_export_to_file($cert , $write_loc, $priv_key , $pass);
Прекрасно работает, теперь, когда я читаю файл с:
openssl_pkcs12_read($write_loc, $certs, $pass);
Вывод в $ certs [‘pkey’] отличается от $ priv_key, который я передал методу export_to_file выше.
Наверняка они должны быть одинаковыми, или я смешиваю 2 совершенно разные вещи?
Спасибо!
Я думаю, что происходит объясняется в Создание ключа PHP RSA
По сути, вы используете ключ, который начинается с -----BEGIN RSA PRIVATE KEY-----
и ключ, который вы получаете, начинается с -----BEGIN PRIVATE KEY-----
,
Первый — это закрытый ключ в формате PKCS1, а второй — закрытый ключ в формате PKCS8. Последний имеет тип закрытого ключа, встроенный в сами данные, закодированные в base64, тогда как первый имеет тип закрытого ключа, встроенный в читаемую человеком строку.
Некоторые версии PHP / OpenSSL выводят ключ PKCS8, а другие — ключ PKCS1.
Других решений пока нет …