繁体   English   中英

如何在没有客户端私钥的情况下用PHP创建X509证书?

[英]How do I create an X509 Certificate in PHP without the clients private key?

我有一台拥有自己的证书的服务器,一个正在尝试让服务器为他生成新证书的客户(并对其进行签名)。 客户端已将其公钥提供给服务器,并且服务器应创建证书并对其进行签名。 在PHP中,我如何让服务器仅使用客户端公共密钥来创建证书? openssl_csr_new似乎想要私钥。

谢谢!

您可以使用phpseclib的最新SVN( 纯PHP X.509解析器)来完成此操作。 例如。

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

$privKey = new Crypt_RSA();
$privKey->loadKey('-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----');

$pubKey = new Crypt_RSA();
$pubKey->loadKey('-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----');
$pubKey->setPublicKey();

$subject = new File_X509();
$subject->setPublicKey($pubKey);
$subject->setDNProp('id-at-organizationName', 'whatever');

$issuer = new File_X509();
// load the DN from an existing X.509 cert
$issuer->loadX509('-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----');
$issuer->setPrivateKey($privKey);

$x509 = new File_X509();
$x509->setStartDate('-1 month');
$x509->setEndDate('+1 year');
$x509->setSerialNumber(1);

$result = $x509->sign($issuer, $subject);
echo $x509->saveX509($result);

您将需要您的私钥和主题公钥。 在此示例中,我从先前用您的私钥签名的X.509中获取了发行DN,但是您可能想调用setDN()呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM