gpt4 book ai didi

php - 我如何使用 phpseclib 创建自签名证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:12 25 4
gpt4 key购买 nike

我如何使用 phpseclib 从现有的 .csr 文件创建自签名证书,只有我可以使用 .csr 文件。

我已阅读手册,该方法使用私钥,但在我的作业中我只能使用 .csr 文件。

我希望你能帮助我。

这是我的代码:

<?php

include('File/X509.php');
include('Crypt/RSA.php');

if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
//This is the content of the file
$csr = file_get_contents($_FILES["file"]["name"]);
}

// create private key / x.509 cert for stunnel / website
$privKey = new Crypt_RSA();
extract($privKey->createKey());
$privKey->loadKey($privatekey);

$pubKey = new Crypt_RSA();
$pubKey->loadKey($publickey);
$pubKey->setPublicKey();

$subject = new File_X509();
$subject->loadCSR('...'); // see csr.pem
// calling setPublicKey() is unnecessary when loadCSR() is called

$issuer = new File_X509();
$issuer->setPrivateKey($privKey);
$issuer->setDN($subject->getDN());

$x509 = new File_X509();
//$x509->setStartDate('-1 month'); // default: now
//$x509->setEndDate('+1 year'); // default: +1 year

$result = $x509->sign($issuer, $subject);
echo "the stunnel.pem contents are as follows:\r\n\r\n";
echo $privKey->getPrivateKey();
echo "\r\n";
echo $x509->saveX509($result);
echo "\r\n";

?>

最佳答案

您需要一个私钥,简单明了。否则,你要用什么签名? X.509 证书的签名字段是强制性的。

我的意思是,如果您只需要一个公钥,就不必担心 X.509 开销。您可以创建一个如下所示的公钥:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0
FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/
3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB
-----END PUBLIC KEY-----

但 X.509 不仅仅是一个公钥 - 它是一个签名的公钥。从技术上讲,CSR 也是如此,但 CSR 始终是自签名的,而 X.509 证书可以由任何人签名。

关于php - 我如何使用 phpseclib 创建自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com