我一直在寻找解决我的问题的方法,这是关于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
答案 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())
的输出