<code>$filename = 'apns-dev-cert.p12';
$password = '...';
$results = array();
$worked = openssl_pkcs12_read(file_get_contents($filename), $results, $password));
if($worked) {
echo '<pre>', print_r($results, true), '
';
} еще {
echo openssl_error_string ();
}
Пожалуйста, попробуйте запустить этот фрагмент. Установите $password
на любую фразу-пароль, необходимую для открытия файла. Если пароля нет, установите его на ноль. Я не верю, что это нужно из ваших openssl
команд.
Вы должны получить вывод с нужным секретным ключом, вероятно, внутри $results['pkey']
.
Если вы видите там свой закрытый ключ, вы можете передать его в openssl_pkey_export
, чтобы получить его в формате PEM, который затем можно записать в файл:
<code>$new_password = null;
$result = null;
$worked = openssl_pkey_export($results['pkey'], $result, $new_password);
if($worked) {
echo "<pre>It worked! Your new pkey is:\n", $result, '
';
} еще {
echo openssl_error_string ();
}
Установите $new_password
на желаемый пароль pkey, если хотите.
Это должно работать для вас, основываясь на том, что я читаю на различных страницах документации.
Если вы действительно хотите продолжать использовать команду openssl
, выдавая оболочку, рассмотрите возможность использования proc_open
вместо system
, чтобы вы могли правильно отловить ошибку сообщения.
Также возможно, что OpenSSL пытается прочитать файл конфигурации и не имеет разрешения на это, хотя должно выдать вам ошибку об этом.