Heim > Artikel > Backend-Entwicklung > openssl函数在https下无法使用
问题: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_get_publickey()函数正常通过,但是openssl_public_encrypt()函数却使apache崩掉。
查apache错误日志
1、因为apache和php的ssl版本不一致,重新configure相同的ssl,即可运行。
2、执行结果仍然只有1、2两处,第3处为空。
何解?
问题解决:
证书和密钥的权限不一致,全部改为0755就可以了。