Как определить конкретное назначение сертификата X509 в PHP - PullRequest
5 голосов
/ 07 марта 2012

Как я могу установить назначение сертификата 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.

Ответы [ 2 ]

5 голосов
/ 10 марта 2012

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

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

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

4 голосов
/ 10 марта 2012

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

...