Добавьте расширенные расширения ключей для сгенерированных сертификатов с помощью phpseclib

Я могу добавить keyusage с phpseclib, используя этот код:

$x509->setExtension('id-ce-keyUsage', array('digitalSignature', 'keyEncipherment'));

Можно также установить расширенное использование ключа? Есть какие-нибудь документы по этому поводу?

0

Решение

$x509->setExtension('id-ce-extKeyUsage', array('id-kp-serverAuth', 'id-kp-clientAuth'));

Полный пример:

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

// 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->setDNProp('id-at-organizationName', 'phpseclib demo cert');
$subject->setPublicKey($pubKey);

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

$x509 = new File_X509();

$x509->loadX509($x509->saveX509($x509->sign($issuer, $subject)));

$x509->setExtension('id-ce-keyUsage', array('digitalSignature', 'keyEncipherment'));
$x509->setExtension('id-ce-extKeyUsage', array('id-kp-serverAuth', 'id-kp-clientAuth'));

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

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";

Не могу сказать, что мне нравится, как вы должны переподписывать сертификат, чтобы получить этот эффект, но неважно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]