2016-03-17 1 views
1

Я работаю над OpenSSL в Windows 8.1, Wamp Apache Version: 2.4.9 PHP Version: 5.5.12. И я в конечном итоге со следующей ошибкой:WAMP не может генерировать закрытый ключ при использовании OpenSSL

enter image description here

Мой PHP код приведен ниже. WAMP не может генерировать закрытый ключ.

$privateKey = openssl_pkey_new(array(
    'private_key_bits' => 384,  // Size of Key. 
    'private_key_type' => OPENSSL_KEYTYPE_RSA, 
)); 

openssl_pkey_export($privateKey, $privKey, null, ['config' => 'C:/wamp/bin/apache/apache2.4.9/conf/openssl.cnf']); 
$a_key = openssl_pkey_get_details($privateKey); 

file_put_contents('keys/'.$username.'_public.key', $a_key['key']); 
file_put_contents('keys/'.$username.'_private.key', $privKey); 
openssl_free_key($privateKey); 

Может ли кто-нибудь помочь мне в запуске OpenSSL в Windows. Спасибо заранее.

+0

Некоторые отказы OpenSSL в Windows относятся к *** '.rnd' *** файлу и сохраняют его состояние. См., Например, [Как исправить "невозможно записать« случайное состояние »в openssl] (http://stackoverflow.com/q/12507277/608639). – jww

+0

Что такое ошибка, которую вы пытаетесь исправить? Вопрос, похоже, меняется, так как люди помогают вам в решении вашей проблемы. – jww

+0

@jww Мне не удалось создать открытый и закрытый ключ, используя openssl в wamp. Что сейчас решено. Ответ ниже решает проблему. – Pritam

ответ

0

Ваш вопрос не очень конкретный, но я могу сказать, что вы звоните openssl_pkey_export с неправильным четвертым аргументом. Он должен быть массивом с ключом config, а не просто строкой. config ключ необходим также для openssl_pkey_new.

<?php 

$privateKey = openssl_pkey_new([ 
    'private_key_bits' => 384, 
    'private_key_type' => OPENSSL_KEYTYPE_RSA, 
    'config' => 'C:/wamp/bin/apache/apache2.4.9/conf/openssl.cnf' 
]); 

openssl_pkey_export($privateKey, $privKey, null, [ 
    'config' => 'C:/wamp/bin/apache/apache2.4.9/conf/openssl.cnf' 
]); 

$a_key = openssl_pkey_get_details($privateKey); 

var_dump($privKey); // Just to test output 

file_put_contents('keys/'.$username.'_public.key', $a_key['key']); 
file_put_contents('keys/'.$username.'_private.key', $privKey); 

openssl_free_key($privateKey); 

Надеется, что это поможет

+0

Привет, Спасибо, что нашли время, чтобы помочь мне здесь. Я попробовал код, приведенный выше. Он по-прежнему вызывает такое же предупреждение. Предупреждение: openssl_pkey_export(): невозможно получить ключ от параметра 1 – Pritam

+0

Другие ошибки связаны с первым. Как только это будет исправлено, это не будет проблемой. – Pritam

+0

Нет, это не дает такого же предупреждения. Первоначальное предупреждение было «... ожидает, что параметр 4 будет массивом ...». Он решен. Теперь у вас проблема с содержимым переменной '$ privateKey' (предупреждение' ... не может получить ключ от параметра 1 ... '). Как я уже сказал, я не могу помочь вам больше без целого исходного кода. – kba

0

Я был похожа проблема, и я разобрался, что WampServer не установлена ​​по умолчанию CA. Как это исправить:

Также убедитесь, что OPENSSL_CONF переменная среды устанавливается в c:\wamp\bin\apache\apache2.4.9\conf\openssl.cnf