OpenSSL not working on Windows, errors 0x02001003 0x2006D080 0x0E064002 OpenSSL not working on Windows, errors 0x02001003 0x2006D080 0x0E064002 apache apache

OpenSSL not working on Windows, errors 0x02001003 0x2006D080 0x0E064002


The code below works as expected. BUT if you run openssl_error_string() after the openssl methods it shows error:0E06D06C:configuration file routines:NCONF_get_string:no value which is some notice I have not been able to find documentation on.

Further note that according to http://www.php.net/manual/en/function.openssl-error-string.php you could be seeing mis-leading errors as error messages are queued:

Be careful when using this function to check errors, as it seems to read from a buffer of > errors, which could include errors from another script or process that was using openssl > functions. (I was surprised to find it returing error messages before I had called any > openssl_* functions)

<?php/* Create the private and public key */$res = openssl_pkey_new();openssl_error_string(); // May throw error even though its working fine!/* Extract the private key from $res to $privKey */openssl_pkey_export($res, $privKey);openssl_error_string(); // May throw error even though its working fine!/* Extract the public key from $res to $pubKey */$pubKey = openssl_pkey_get_details($res);$pubKey = $pubKey["key"];$data = 'i.amniels.com is a great website!';/* Encrypt the data using the public key * The encrypted data is stored in $encrypted */openssl_public_encrypt($data, $encrypted, $pubKey);/* Decrypt the data using the private key and store the * result in $decrypted. */openssl_private_decrypt($encrypted, $decrypted, $privKey);echo $decrypted;?>


a few things here :

%PATH% should also contain windows and system32 so your %PATH% should look like c:\windows;c:\windows\system32;E:\wamp\php and in e:\wamp\php should be the openssl dll file

also try the openssl version matching the header version 0.9.8y 5 Feb 2013 download here for 32bit and here for 64bit

this code seems to work for me:

// Create the keypair$res=openssl_pkey_new();// Get private keyopenssl_pkey_export($res, $privkey);// Get public key$pubkey=openssl_pkey_get_details($res);$pubkey=$pubkey["key"];$Info = array(    "countryName" => "UK",    "stateOrProvinceName" => "Somerset",    "localityName" => "Glastonbury",    "organizationName" => "The Brain Room Limited",    "organizationalUnitName" => "PHP Documentation Team",    "commonName" => "Wez Furlong",    "emailAddress" => "wez@example.com");// Actual file$Private_Key = null;$Unsigned_Cert = openssl_csr_new($Info,$Private_Key);$Signed_Cert = openssl_csr_sign($Unsigned_Cert,null,$Private_Key,365);openssl_pkcs12_export_to_file($Signed_Cert,"test.p12",$Private_Key,"123456");


I had a similar problem, for me it helped to set the environment variable 'OPENSSL_CONF' manually at the beginning of my script.

Somehow the environment variable wasn't set correctly, or didn't get through to my php (Setup: AMPPS, Win7 64Bit).

The example location used below is the path that you'd have to use with a standard AMPPS installation, so if you are using AMPPS, just copy&paste :

putenv("OPENSSL_CONF=C:\Program Files (x86)\Ampps\php\extras\openssl.cnf");