xampp openssl ошибки при вызове openssl_pkey_new (); - PullRequest
9 голосов
/ 18 января 2011

, поэтому я пытаюсь заставить openssl работать над моей установкой Windows xampp (1.7.3), которая построена с OpenSSL 0.9.8l.Это всего лишь мой второй раз, когда я устанавливаю openssl на * amp, но первый раз прошел гладко (это была установка wamp на той же машине, но я обнаружил, что xampp был больше моим стилем, поэтому я переключился).

, когда я попытался выполнить простой скрипт установки:

var_dump(getenv('OPENSSL_CONF'));
$privateKey = openssl_pkey_new();

while($message = openssl_error_string()){
    echo $message.'<br />'.PHP_EOL;
}

Я получил ответное сообщение:

error:02001003:system library:fopen:No such process
error:2006D080:BIO routines:BIO_new_file:no such file  
error:0E064002:configuration file routines:CONF_load:system lib  

Я прочитал страницу php.net, которая информировала меня овозможность установки констант среды openssl.cnf и ssleay.dll, я пробовал, но ничего не изменилось.

A var_dump из OPENSSL_CONF привело к пути: C:/xampp/apache/bin/openssl.cnf, который является правильным для моей машины.

Я проверил, что путь к каталогу php (где ssleay32.dll инаходятся файлы libeay32.dll), в моем пути была определена системная переменная var, и это не так, поэтому я определил ее, перезагрузил компьютер и в процессе перезагрузил apache, но в сообщениях об ошибках не изменилось.

myВерсия xampp не поставлялась с php_openssl.dll, и поэтому я считаю, что документ php.ini должен исключить его из списка доступных .dll, как это было при проверке.Я полагаю, что xampp поставляется с компиляцией с расширением на основе Zend.

Я могу запустить openssl из графического интерфейса xampp и успешно создал пару с закрытым / открытым ключом.

phpinfo () сообщает:

openssl Поддержка OpenSSL включена
Версия библиотеки OpenSSL OpenSSL
0.9.8l 5 ноября 2009 Версия OpenSSL заголовка OpenSSL 0.9.8l 5 ноября 2009

тамбыл старый ssleay.dll и libeay32.dll из установки wamp, я полагаю, в моем системном каталоге, но я удалил их с тех пор.(после перезапуска и перезагрузки apache)

Я попытался скопировать файл openssl.cnf в каталог по умолчанию 'C: \ usr \ local \ ssl \ openssl.cnf' без изменений.

Я такжепрочитайте эту ветку и эту ветку, но приведенные ответы были уместны, но не помогли или не существовали.

У всех есть идеи по поводу того, что я должен проверить дальшеили что-нибудь очевидное, что я пропустил?

Ответы [ 2 ]

13 голосов
/ 18 января 2011

Возможно, вам нужно указать путь к файлу openssl.cnf при вызове openssl_pkey_new():

$configArgs = array(
    'config' => '/etc/openssl/openssl.cnf',
    // ...
);
openssl_pkey_new($configArgs);

Возможно, вам также понадобится указать дополнительные настройки в $configArgs дляфункция для работы (не проверял это в последнее время).См. Также http://php.net/manual/en/function.openssl-csr-new.php для описания поддерживаемых дополнительных аргументов конфигурации.

4 голосов
/ 06 октября 2011

Вы проверяете переменную OPENSSL_CONF в xampp / apache / conf / extra / http-xampp.conf

Затем запускаете apache, используя xampp / apache_start.bat, а НЕ ПАНЕЛЬ УПРАВЛЕНИЯ XAMPP (странно, что при запуске изпанель управления не работает [возможно, текущая проблема с каталогом])

Это для XAMPP 1.7.4 на Win7 64bit

...