Как определить конкретную цель сертификата X509 в PHP


Как я могу установить назначение сертификата X.509 в X509_PURPOSE_ANY в PHP 5.x?

Следующий код выводит это предупреждение:

Предупреждение: openssl_csr_new()[function.openssl-csr-new.php ]: dn: X509_PURPOSE не является распознанным именем в/home/www/index.php в строке 45

PHP-скрипт:

$Configs = array(       
        'config' => 'test.cnf',
        'digest_alg' => 'sha1',
        'x509_extensions' => 'v3_ca',
        'req_extensions' => 'v3_req',
        'private_key_bits' => 2048,
        'private_key_type' => OPENSSL_KEYTYPE_RSA,
        'encrypt_key' => true,
        'encrypt_key_cipher' => OPENSSL_CIPHER_3DES);

$ExtraAttribs = array('X509_PURPOSE' => 'X509_PURPOSE_ANY');

//create cert
$dn      = array('commonName' => 'Chief');
$privkey = openssl_pkey_new($Configs);
$csr     = openssl_csr_new($dn, $privkey, $Configs, $ExtraAttribs);

Последняя строка - строка 45.

Author: hakre, 2012-03-07

2 answers

Я не могу найти никаких указаний на то, что сертификаты X509 имеют "цель". Я могу найти только "Основные ограничения", "Использование ключей" и "Расширенное использование ключей".

Самое близкое, что я смог найти, это http://www.openssl.org/docs/apps/verify.html в котором говорится

Для совместимости с предыдущими версиями SSLeay и OpenSSL сертификат без настроек доверия считается действительным для всех целей.

 5
Author: Martin, 2012-03-10 00:28:59

Цель устанавливается при подписании, а не в КСО. Быстрый просмотр документов php позволяет предположить, что это не поддерживается API, но вы можете вызвать openssl x509 из оболочки

 4
Author: symcbean, 2012-03-10 01:05:54