Можно ли конвертировать файлы .cer и .key в .pem, используя только функции php openssl?

Я уже преобразовал открытый ключ (.cer) и закрытый ключ (.key) в формат pem, но мне пришлось использовать командные строки для их преобразования следующим образом:

$openSSLpath = "c:\OpenSSL-Win64\bin\openssl.exe";   //Path to OpenSSL exe
$path = "c:\appserver\Apache2.2\htdocs\FIEL";        //Path to Project Folder
$rutaCer = $path.'\GAMA600504JP1.cer';
$rutaKey = $path.'\GAMA600504JP1.key';
$passwordKey = '12345678a';

$cmdKey = $openSSLpath." pkcs8 -inform DER -in ".$rutaKey." -passin pass:".$passwordKey." -out ".$rutaKey.".pem";
exec($cmdKey);

$cmdCer = $openSSLpath." x509 -inform DER -outform PEM -in ".$rutaCer." -pubkey -out ".$rutaCer.".pem";
exec($cmdCer);

Это правильно генерирует файлы .pem, но мне нужно знать, возможно ли это сделать любым другим способом с использованием PHP. Обратите внимание, что я совершенно новичок в openSSL, и это единственный способ, который я нашел, сделать это на PHP.

Для этого я должен убедиться, что OpenSSL правильно расположен и установлен на моем сервере, а для преобразования в .pem мне нужно временно сохранить файлы .cer и .key на сервере, что не рекомендуется по соображениям безопасности. ,

Есть ли другой путь?

0

Решение

Вы можете легко конвертировать ваши данные дер в PEM с помощью простого кода.

$rutaCer = file_get_contents($path.'\GAMA600504JP1.cer');
$rutaKey = file_get_contents($path.'\GAMA600504JP1.key');

echo "-----BEGIN PRIVATE KEY-----\n" . chunk_split(base64_encode($rutaKey), 64, "\n") . "-----END PRIVATE KEY-----";
echo "-----BEGIN CERTIFICATE-----\n" . chunk_split(base64_encode($rutaCer), 64, "\n") . "-----END CERTIFICATE-----";

// Save anywhere

В PHP есть функции для экспорта в PEM, но есть проблема с загрузкой ключей / сертификатов из двоичного формата DER.

Другим способом может быть использование phpsec библиотека.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]