1010101001000100110100111
@1010101001000100110100111

Тонкая настройка параметров OpenSSL

Библиотека OpenSSL держит все настройки по-умолчанию в файле openssl.cnf
Там туева хуча всяких параметров, многие из которых совсем необязательные.
Пробовал комментировать большую часть из них — все прекрасно работало.
Но, все (генерация ключей, подписание сертификатов) переставало работать,
после того, как я целиком удалял этот файл из папки библиотеки OpenSSL.
Кое-что (например, генерация ключей) вновь начинало работать, после того, как
я создавал пустой файл openssl.cnf с каким-нибудь тривиальным содержимым.
Добрые люди подсказали, как же все-таки можно обойтись без этого файла вообще:
<?php
$config["config"] = "nul"; // "openssl.cnf";
$config["private_key_bits"] = 384; // 1024;
$config["private_key_type"] = OPENSSL_KEYTYPE_RSA;
$config["encrypt_key"] = false;
$config["digest_alg"] = "default"; // "sha1";

$privkey = openssl_pkey_new($config);
// То есть, нужно просто задать для параметра config значение «nul».
// Но, дальнейшие мои самостоятельные шаги не привели к успеху:
$dn["countryName"] = "RU";
$dn["stateOrProvinceName"] = "Vladimirskaya";
$dn["localityName"] = "Vladimir";
$dn["organizationName"] = "Habrahabr";
$dn["organizationalUnitName"] = "Habr";
$dn["commonName"] = "1010101001000100110100111";
$dn["emailAddress"] = "1010101001000100110100111@habrahabr.ru";

$csr = openssl_csr_new($dn, $privkey, $config);
var_dump($csr);
На выходе получалось:

bool(false)

Чего же еще не хватает для полного счастья?
То есть, еакие конфиги еще необходимо задать?
  • Вопрос задан
  • 5728 просмотров
Пригласить эксперта
Ответы на вопрос 1
kolobob
@kolobob
Вообще говоря, поддержка OpenSSL в PHP реализована коряво. Вместо того, чтобы обернуть стандартные функции OpenSSL, они стали изобретать велосипед, прибивая костыли гвоздями. В итоге эта поддержка получилась сырой, и едва ли когда-нибудь станет нормальной.

Все это дополняется частично ошибочной/устаревшей документацией по этим php'шным функциям. Я бы рекомендовал отказаться от этой гиблой затеи и написать на чем-то более кошерном. Если все же хочется на php, рекомендую смотреть в исходники PHP, вместо мануалов — они достоверней.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы