Я искал решение моей проблемы, которая касается OpenSSL. Я использую shell_exec () для запуска приглашений оболочки. Например:
shell_exec("openssl genrsa -out myprvkey.pem 1024");
работает отлично, и генерирует myprvkey.pem.
Тем не мение,
shell_exec("openssl req -new -key myprvkey.pem -x509 -days 365 -out mypubcert.pem");
не работает без каких-либо ошибок.
Я делаю что-то неправильно? Благодарю. PS: Пожалуйста, напомни мне, если я что-то упустил.
OpenSSL версия: 268439647
Похоже, вы пытаетесь создать CSR? Если это так, вы можете сделать это с помощью phpseclib, чистая реализация PHP CSR, довольно легко Вот пример, который создает новый ключ RSA и новый CSR:
<?php
include('File/X509.php');
include('Crypt/RSA.php');
$privKey = new Crypt_RSA();
extract($privKey->createKey());
$privKey->loadKey($privatekey);
$x509 = new File_X509();
$x509->setPrivateKey($privKey);
$x509->setDNProp('id-at-organizationName', 'phpseclib demo cert');
$csr = $x509->signCSR();
echo $x509->saveCSR($csr);
?>
Вот пример, который создает новый CSR, используя существующий ключ RSA:
<?php
include('File/X509.php');
include('Crypt/RSA.php');
$privKey = new Crypt_RSA();
$privKey->loadKey('...');
$x509 = new File_X509();
$x509->setPrivateKey($privKey);
$x509->setDNProp('id-at-organizationName', 'phpseclib demo cert');
$csr = $x509->signCSR();
echo $x509->saveCSR($csr);
?>
(единственное отличие состоит в том, что loadKey
передается строка [которая может быть заполнена через file_get_contents
или просто вводится напрямую] вместо вывода extract($rsa->createKey())
)
Других решений пока нет …