Edit report at https://bugs.php.net/bug.php?id=60157&edit=1

 ID:                 60157
 Comment by:         dfroe at gmx dot de
 Reported by:        zeusgerde at arcor dot de
 Summary:            OPENSSL_CONF environment variable ignored
 Status:             Open
 Type:               Bug
 Package:            OpenSSL related
 Operating System:   Windows XP and Windows 7
 PHP Version:        5.3.8
 Block user comment: N
 Private report:     N

 New Comment:

I am able to reproduce this bug under FreeBSD, too. So it does not seem to be a 
Windows specific issue. I am using PHP 5.3.8 compiled via the latest FreeBSD 
ports tree. The putenv() hint does not work, either. Passing the config value 
within the config array directly to the openssl function works - but can of 
course only be a quick and dirty workaround.


Previous Comments:
------------------------------------------------------------------------
[2011-10-31 07:51:05] zeusgerde at arcor dot de

> Where do you set it? System wild? manually in your script?

In httpd.conf in a global scope:
| SetEnv OPENSSL_CONF D:\sandbox\openssl.cnf

You can see that it is set in the actual result:
| var_dump(getenv('OPENSSL_CONF'));
| // string(42) "D:\sandbox\openssl.cnf"

(hint: don't look at the string length, I scrambled the path in this bug report)

> putenv("OPENSSL_CONF=whereyouwanit");

No change in the actual result. Even if I do this:

| putenv("OPENSSL_CONF=", getenv('OPENSSL_CONF'));

It only works if I use the $configargs parameter directly (see my first comment 
at 2011-10-28 11:48 UTC)

------------------------------------------------------------------------
[2011-10-28 12:45:52] paj...@php.net

Where do you set it? System wild? manually in your script?

try:

putenv("OPENSSL_CONF=whereyouwanit");
.. rest of your code..

Only to verify a possible cause.

------------------------------------------------------------------------
[2011-10-28 11:50:18] zeusgerde at arcor dot de

BTW, this is the work-around

var_dump(openssl_pkey_new(array(
        'config' => getenv('OPENSSL_CONF'),
)));

------------------------------------------------------------------------
[2011-10-28 11:48:36] zeusgerde at arcor dot de

Description:
------------
setting OPENSSL_CONF is ignored in openssl* functions despite the documentation 
lists it as the first location where the configuration file is searched

http://de2.php.net/manual/en/openssl.installation.php


Test script:
---------------
<?php

header('Content-Type: text/plain');

echo "Current PHP version: ", phpversion(), "\n";

echo "*** OPENSSL_CONF\n";
var_dump(getenv('OPENSSL_CONF'));

echo "\n*** Errors before calling openssl_pkey_new\n";
while (($e = openssl_error_string()) !== false) {
        var_dump($e);
}

echo "\n*** Calling openssl_pkey_new\n";

var_dump(openssl_pkey_new());

echo "\n*** Errors after calling openssl_pkey_new\n";
while (($e = openssl_error_string()) !== false) {
        var_dump($e);
}


Expected result:
----------------
Current PHP version: 5.3.8
*** OPENSSL_CONF
string(42) "D:\sandbox\openssl.cnf"

*** Errors before calling openssl_pkey_new

*** Calling openssl_pkey_new
resource(2) of type (OpenSSL key)

*** Errors after calling openssl_pkey_new


Actual result:
--------------
Current PHP version: 5.3.8
*** OPENSSL_CONF
string(42) "D:\sandbox\openssl.cnf"

*** Errors before calling openssl_pkey_new

*** Calling openssl_pkey_new
bool(false)

*** Errors after calling openssl_pkey_new
string(51) "error:02001003:system library:fopen:No such process"
string(53) "error:2006D080:BIO routines:BIO_new_file:no such file"
string(63) "error:0E064002:configuration file routines:CONF_load:system lib"
string(51) "error:02001003:system library:fopen:No such process"
string(53) "error:2006D080:BIO routines:BIO_new_file:no such file"
string(63) "error:0E064002:configuration file routines:CONF_load:system lib"


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60157&edit=1

Reply via email to