Edit report at https://bugs.php.net/bug.php?id=63992&edit=1
ID: 63992
Updated by: pajoye@php.net
Reported by: mikhail dot v dot gavrilov at gmail dot com
Summary: php not use default openSSH confing
Status: Assigned
Type: Bug
Package: OpenSSL related
Operating System: RHEL/Fedora
PHP Version: 5.4.11RC1
Assigned To: pajoye
Block user comment: N
Private report: N
New Comment:
A quick comment about the patch, using this function may affect anything using
openssl within the same process, that's really not good.
Also, in case of curl, curl should take care of that, using options.
Previous Comments:
------------------------------------------------------------------------
[2013-01-15 14:51:34] mikhail dot v dot gavrilov at gmail dot com
Description:
------------
For using GOST encryption engine:
1. i compiled openSSH with GOST support
2. added the following lines in openssl.cnf
openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
default_algorithms = ALL
dynamic_path = /usr/lib/openssl/engines/libgost.so
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
But when I use curl PHP still get error: 'Cannot communicate securely with peer:
no common encryption algorithm(s).'
Than I search I find this solution:
http://stackoverflow.com/questions/10959771/openssl-and-gost-engine-issue-
statically-linked
So I create patch
*** 111/openssl.c 2012-12-19 12:55:19.000000000 +0600
--- openssl.c 2013-01-15 18:43:22.000000000 +0600
***************
*** 1038,1043 ****
--- 1038,1046 ----
le_x509 = zend_register_list_destructors_ex(php_x509_free, NULL,
"OpenSSL X.509", module_number);
le_csr = zend_register_list_destructors_ex(php_csr_free, NULL, "OpenSSL
X.509 CSR", module_number);
+ /* needed for use default config */
+ OPENSSL_config(NULL);
+
SSL_library_init();
OpenSSL_add_all_ciphers();
OpenSSL_add_all_digests();
and my script became work.
Test script:
---------------
$address="https://icrs.nbki.ru/products/B2BRequestServlet";
// $proxy = '10.10.4.24:3128';
$xml = '';
$ch = curl_init($address);
$page = "Xml.php";
$headers = array(
"POST ".$page." HTTP/1.0",
"content-type:application/octet-stream;charset=\"windows-1251\"",
);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
if(isset($proxy)) curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);if ($response === false) throw new Exception(curl_error($ch));
curl_close($ch);
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63992&edit=1