首页 > 后端开发 > 正文

php怎么开启openssl模块

2024-10-05 04:35:13 | 我爱编程网

今天我爱编程网小编整理了php怎么开启openssl模块相关信息,希望在这方面能够更好帮助到大家。

本文目录一览:

php怎么开启openssl模块

php怎么开启openssl模块

php开启openssl的方法,大多数情况下openssl是没有开启的,要想启用需要进行下简单的设置

windows下开启方法:

1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。

2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWS\system32\  文件夹下。

3: 重启apache或者iis(iisreset /restart)

至此,openssl功能就开启了。

Linux下开启方法:

我使用的是锦尚数据的云主机,PHP版本:5.2.14

下面方案就以我的主机为例讲解为PHP添加openssl模块支持。

网上一些答案说要重新编译PHP,添加configure参数,增加openssl的支持。这里讲一个不需要重新编译的方法。

如果服务器上存在PHP安装包文件最好,如果已经删除,去下载和phpinfo页面显示版本一样的PHP安装文件,我这里是 php-5.2.14.tar.gz

推荐去搜狐镜像下载,网易镜像没有找到。地址为:

用ssh工具连接到主机。

# 下载到/var/www/php5目录下
cd /var/www/php5
wget -5.2.14.tar.gz
# 解压
tar zxvf php-5.2.14.tar.gz
# 进入PHP的openssl扩展模块目录
cd php-5.2.14/ext/openssl/
/var/www/php5/bin/phpize # 这里为你自己的phpize路径,如果找不到,使用whereis phpize查找
# 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名
mv config0.m4 config.m4
/var/www/php5/bin/phpize
./configure --with-openssl --with-php-config=/var/www/php5/bin/php-config
make
make install
# 安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions
# 编辑php.ini文件,在文件最后添加
extension=openssl.so
# 重启Apache即可
/usr/local/apache2/bin/apachectl restart

php怎么开启openssl模块

php的openssl_sign($data,$sign,$private_key)这个函数的源码是什么?

PHP_FUNCTION(openssl_sign)
{
zval **key, *signature;
EVP_PKEY *pkey;
int siglen;
unsigned char *sigbuf;
long keyresource = -1;
char * data;
int data_len;
EVP_MD_CTX md_ctx;
zval *method = NULL;
long signature_algo = OPENSSL_ALGO_SHA1;
const EVP_MD *mdtype;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szZ|z", &data, &data_len, &signature, &key, &method) == FAILURE) {
return;
}
pkey = php_openssl_evp_from_zval(key, 0, "", 0, &keyresource TSRMLS_CC);
if (pkey == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "supplied key param cannot be coerced into a private key");
RETURN_FALSE;
}
if (method == NULL || Z_TYPE_P(method) == IS_LONG) {
if (method != NULL) {
signature_algo = Z_LVAL_P(method);
}
mdtype = php_openssl_get_evp_md_from_algo(signature_algo);
} else if (Z_TYPE_P(method) == IS_STRING) {
mdtype = EVP_get_digestbyname(Z_STRVAL_P(method));
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown signature algorithm.");
RETURN_FALSE;
}
if (!mdtype) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown signature algorithm.");
RETURN_FALSE;
}
siglen = EVP_PKEY_size(pkey);
sigbuf = emalloc(siglen + 1);
EVP_SignInit(&md_ctx, mdtype);
EVP_SignUpdate(&md_ctx, data, data_len);
if (EVP_SignFinal (&md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) {
zval_dtor(signature);
sigbuf[siglen] = '\0';
ZVAL_STRINGL(signature, (char *)sigbuf, siglen, 0);
RETVAL_TRUE;
} else {
efree(sigbuf);
RETVAL_FALSE;
}
EVP_MD_CTX_cleanup(&md_ctx);
if (keyresource == -1) {
EVP_PKEY_free(pkey);
}
}

这个是函数的源码,C写的。源码可以在php官网下载一个php版本,解压打开里面的ext/openssl.c搜上面代码即可。

php怎么开启openssl模块

php基于openssl加密解密、验证技巧

我爱编程网(https://www.52biancheng.com)小编还为大家带来php基于openssl加密解密、验证技巧的相关内容。

PHP与 OpenSSL 结合,实现加密、解密与验证技巧,简化SSL加密、签名验证。

签名校验方法:

1. 通过生成私钥与公钥进行数据签名。具体步骤包含生成RSA私钥和公钥,利用私钥对信息进行加密生成签名,然后将签名和信息作为明文传输。接收端利用公钥解密签名,再利用私钥解密信息,最后校验签名与信息是否一致。

2. 验证过程包含解密签名与信息,以及对比校验两部分内容。校验是否匹配即为验证成功,否则为失败。

解密流程:

1. 使用已知密钥和加密算法对密文进行解密,恢复原始信息。

以上是简化SSL加密与验证的关键点,通过明确步骤与代码逻辑,实现简单而有效率的加密与验证过程。PHP与 OpenSSL 环境下的安全通信,不仅提高了数据传输的安全性,且在实践中简化了操作与应用。

关注公众号:PHP开源社区,获取更多PHP大厂面试文档、进阶架构视频与精华文章,涵盖框架、微服务、分布式及高并发场景,还有数据库篇的四年精华资料,致力于推动PHP技能提升。 我爱编程网

以上,就是我爱编程网小编给大家带来的php怎么开启openssl模块全部内容,希望对大家有所帮助!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php怎么开启openssl模块”相关推荐