RSA шифрование, openssl

bars80081

Новичок
товарищи, никогда не копался в данной теме, но теперь очень надо

необходимо наладить обмен шифрованными сообщениями между серверами.

смотрю на http://ru.php.net/manual/en/book.openssl.php и не вижу с какого края этот пирог кусать. может у кого есть ссылка на вразумительный мануал?

во-вторых, не смотря на то, что openssl у меня установлен, я не могу его заставить работать.

к примеру, скачал для ознакомления с принципом работы вот этот скрипт, он у меня сыпет ошибками

Warning: openssl_pkey_export() [function.openssl-pkey-export]: cannot get key from parameter 1 in D:\apache\farf\www\xeim\gks\encrypt.class.php on line 126

вытаскиваю ошибку, установкой перед этой функцией проверки:
PHP:
$private_key = openssl_pkey_new($params);

$mes = openssl_error_string();
var_dump($mes);

openssl_pkey_export($private_key,$private_key_string); // 126 строка
получаю:
string(51) "error:02001003:system library:fopen:No such process"

что делать дальше - невразумляю
 

bars80081

Новичок
нет такого процесса
но у автора же он получается был. скрипты у него самодостаточны, ругается как раз демо-файл

а где копать какой-то процесс - загадка
 

bars80081

Новичок
увидел я на одном форуме указание пути к конфигурационному файлу, потом отыскал его у себя и указал:

PHP:
$config = array(
    'config' => 'C:/Program Files/web/php/extras/openssl/openssl.cnf',
);
$privKey = openssl_pkey_new($config);
$mes = openssl_error_string();
var_dump($mes);
var_dump($privKey);
теперь пишет новую ошибку

string(68) "error:0E06D06C:configuration file routines:NCONF_get_string:no value"
resource(11) of type (OpenSSL key)
однако, судя по всему, операцию выполняет

но это в урезаном примере, а вот в если пользоваться скриптом из соседней темы, то он по-прежнему не работает, то есть закрывать глаза на ошибку нельзя

может кто-нибудь по ней подсказать, потому как поиск даёт практически полное игнорирование её. то есть либо данный вопрос остаётся без ответа, либо народ машет рукой

я, как понимаю, надо просто в конфиге написать какую-то переменную. но какой значение и в каком блоке?
написал, к примеру,
NCONF_get_string = 0
в [ CA_default ] openssl.cnf - шара не прокатила
 

bars80081

Новичок
не смог докопаться до корня проблем, решил пока отложить, раз уж хоть как-то функционирует

в комплексе заработало только на костылях, пришлось постоянно указывать путь к конфигу
PHP:
    $params = array(
		'config' => 'C:/Program Files/web/php/extras/openssl/openssl.cnf',
		'digest_alg' => 'sha1',
		'private_key_type' => OPENSSL_KEYTYPE_RSA,
		'encrypt_key' => false
	);
    $private_key = openssl_pkey_new($params);
    openssl_pkey_export($private_key, $private_key_string, null, $params);
    
    //generate certificate (to get a public key from it)
    $csr = openssl_csr_new(array(), $private_key, $params);
    $cert = openssl_csr_sign($csr, null, $private_key, 1, $params);
    openssl_x509_export($cert, $str_cert);
    
    //get the public key from the certificate
    $public_key = openssl_pkey_get_public($str_cert);
    //get the PEM-encoded public key
    $public_key_details = openssl_pkey_get_details($public_key);
    $public_key_string = $public_key_details['key'];
    
    $return = array('private'=>$private_key_string,'public'=>$public_key_string);
теперь меня беспокоит, что пришлось указать третий аргумент к openssl_pkey_export, который отвечает за дополнительную защиту ключа, что, наверняка вносит коррективу в его формирование
http://ru.php.net/manual/en/function.openssl-pkey-export.php

но пока, может быть задача решена.
если пойдут ошибки, вернусь
 
Сверху