OpenSSL req不适用于PHP Shell

时间:2014-10-13 18:35:00

标签: php openssl

我一直在寻找解决我的问题的方法,这是关于OpenSSL的。我使用shell_exec()来运行shell promts。例如:

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

1 个答案:

答案 0 :(得分:1)

您是否正在尝试创建CSR?如果是这样,您可以使用phpseclib, a pure PHP CSR implementation轻松完成此操作。这是一个创建新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);
?>

以下是使用现有RSA密钥创建新CSR的示例:

<?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())的输出