Я хочу создать самоподписанный сертификат в PHP 5.x.с моей (альтернативной) конфигурацией openssl, которая должна быть определена моим PHP-кодом.Скрипт PHP будет работать в разных средах (веб-серверы общего хостинга).
Официальное Руководство по PHP гласит:
По умолчанию информация в вашей системе openssl.conf используется для инициализации запроса;Вы можете указать раздел файла конфигурации, установив ключ config_section_section в configargs.Вы также можете указать альтернативный файл конфигурации openssl, установив в качестве значения ключа конфигурации путь к файлу, который вы хотите использовать. Следующие ключи, если они присутствуют в configargs, ведут себя как их эквиваленты в openssl.conf, как указано в таблице ниже .....
Мой вопрос: есть ли причина, по которой мне нужно явно указывать путь к openssl.conf, потому что, кажется, он прекрасно работает без него:
$Configs = array(
'digest_alg' => 'sha1',
'x509_extensions' => 'v3_ca',
'req_extensions' => 'v3_req',
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'encrypt_key' => true,
'encrypt_key_cipher' => OPENSSL_CIPHER_3DES
);
$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privkey, $Configs);
$sscert = openssl_csr_sign($csr, null, $privkey, 365, $Configs);
Редактировать:
В комментариях пользователя к Руководству по PHP указано, почему они всегда указывают путь к openssl.CNF?Например:
$configargs = array(
'config' => '/etc/ssl/openssl.cnf',
'digest_alg' => 'md5',
'x509_extensions' => 'v3_ca',
'req_extensions' => 'v3_req',
'private_key_bits' => 666,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'encrypt_key' => false,
);