首頁  >  文章  >  後端開發  >  openssl函数在https下无法使用

openssl函数在https下无法使用

WBOY
WBOY原創
2016-06-23 14:10:321123瀏覽

问题:Linux+apache2+php5的环境下,配置ssl使https可以访问,然后执行测试代码:

<?php#ssl-encry.php$source = "This is encry-content.";echo "1.Source: $source";$fp=fopen("/path/to/certificate.crt","r");$pub_key=fread($fp,8192);fclose($fp);openssl_get_publickey($pub_key);openssl_public_encrypt($source,$crypttext,$pub_key);echo "2.String crypted: $crypttext";$fp=fopen("/path/to/private.key","r");$priv_key=fread($fp,8192);fclose($fp);// $passphrase is required if your key is encoded (suggested)$passphrase = '';$res = openssl_get_privatekey($priv_key,$passphrase);openssl_private_decrypt($crypttext,$newsource,$res);echo "3.String decrypt : $newsource";?> 

运行后,页面提示无法连接服务器。
经测试,问题在于openssl_public_encrypt()函数无法执行。
openssl_get_publickey()函数正常通过,但是openssl_public_encrypt()函数却使apache崩掉。

直接后台执行:/path/php -f ssl-encry.php ,只有1、2有结果,第3处空。
Windows环境下测试正常输出。

此种情如何解决?


回复讨论(解决方案)

openssl_get_publickey()函数正常通过,但是openssl_public_encrypt()函数却使apache崩掉。

查apache错误日志

1、因为apache和php的ssl版本不一致,重新configure相同的ssl,即可运行。
2、执行结果仍然只有1、2两处,第3处为空。
何解?

问题解决:
证书和密钥的权限不一致,全部改为0755就可以了。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn