Per poter far funzionare OpenSSL sotto PHP in Windows occorre abilitare l'estensione "openssl" nel php.ini scommentando la riga "php_openssl.dll" e accertandosi che la distrubuzione PHP che si usa sia compilata con ssl.
Fatto questo si passa all'utilizzo, che potrebbe tirare calci se non trova qualcosa.
Affinché funzioni è necessario che riesca a trovare il file "libeay32.dll" all'interno del PATH.
Fatto questo usare il programma di testa nella prossima pagina.
-
Questi annunci tengono il sito vivo e gratuito.
-
Per procedere per favore attendi secondi. Grazie.
<?php
$secureConnection = isset($_SERVER['HTTPS']);
// Create the keypair
$res=openssl_pkey_new();
// Get private key
openssl_pkey_export($res, $privatekey);
// Get public key
$publickey=openssl_pkey_get_details($res);
$publickey=$publickey["key"];
echo "Private Key:<BR>$privatekey<br><br>Public Key:<BR>$publickey<BR><BR>";
$cleartext = '1234 5678 9012 3456';
echo "Clear text:<br>$cleartext<BR><BR>";
openssl_public_encrypt($cleartext, $crypttext, $publickey);
echo "Crypt text:<br>$crypttext<BR><BR>";
openssl_private_decrypt($crypttext, $decrypted, $privatekey);
echo "Decrypted text:<BR>$decrypted<br><br>";
?>
Se non funziona e restituisce un errore tipo:
error:02001002:system library:fopen:No such file or directory
oppure
error:2006D080:BIO routines:BIO_new_file:no such file
con ogni probabilità non riesce a trovare il file "openssl.cnf" che racchiude tutte le informazioni base dei criptaggi, tipo numero di bits delle chiavi, nomi, email ecc. per i certificati e così via.
Di default si trova nella directory di installazione di PHP sotto la cartella "extras/openssl.cnf"
Per farglielo trovare è sufficiente indicarglielo con la variabile d'ambiente OPENSSL_CONF.
Nome: OPENSSL_CONF
Valore: C:\path\php\extras\openssl.cnf
E' importante ricordare che è sempre bene un riavvìo del PC per rendere effettiva questa variabile.
Riprovare, l'errore dovrebbe essersene andato.
error:0E06D06C:configuration file routines:NCONF_get_string:no value
Nel caso si dovesse incorrere in questo errore alla chiamata di openssl_pkey_new() (riportato da "openssl_error_string()") stai sereno perché a quanto pare sembra essere un problema di PHP con OpenSSL.
Qui c'è una discussione su StackOverflow che ne parla.
Manca proprio il supporto per OpenSSL (come indicato nel phpinfo)
Nel caso PHP ignori proprio il supporto per OpenSSL (quindi nel php info si vede proprio scritto "OpenSSL support: disabled"), nonostante l'estensione "php_openssl.dll" sia stata abilitata, allora è facile che non Apache non trovi le dll necessarie per abilitare SSL.
Per risolvere è sufficiente fornire la path alle 4 dll nel file httpd.conf di Apache:
Define PHPROOT "C:/Users/Niki/Libs/php-5.5.34-Win32-VC11-x64"
LoadFile "${PHPROOT}/libeay32.dll"
LoadFile "${PHPROOT}/ssleay32.dll"
LoadFile "${PHPROOT}/php5ts.dll"
LoadFile "${PHPROOT}/libpq.dll"