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

Я могу добавить использование ключей с помощью phpseclib, используя этот код:

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

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


person JohnKiller    schedule 24.11.2014    source источник


Ответы (1)


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

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

person neubert    schedule 24.11.2014
comment
Спасибо большое, работает отлично! Не могли бы вы также взглянуть на мой другой вопрос stackoverflow.com/questions/27100456/? Разве это не похоже на установку id-kp-serverAuth в качестве расширенного использования ключа? - person JohnKiller; 24.11.2014
comment
Yah - Я сделаю это, когда я вернусь домой! Я на работе прямо сейчас, похоже, что дела начинают нарастать в течение дня. - person neubert; 24.11.2014