簡體   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