Как определить конкретную цель сертификата 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.
2 answers
Я не могу найти никаких указаний на то, что сертификаты X509 имеют "цель". Я могу найти только "Основные ограничения", "Использование ключей" и "Расширенное использование ключей".
Самое близкое, что я смог найти, это http://www.openssl.org/docs/apps/verify.html в котором говорится
Для совместимости с предыдущими версиями SSLeay и OpenSSL сертификат без настроек доверия считается действительным для всех целей.
Цель устанавливается при подписании, а не в КСО. Быстрый просмотр документов php позволяет предположить, что это не поддерживается API, но вы можете вызвать openssl x509 из оболочки