首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP-FPM和SSLKEYLOGFILE问题

PHP-FPM和SSLKEYLOGFILE问题
EN

Stack Overflow用户
提问于 2021-04-08 07:46:11
回答 1查看 260关注 0票数 0

我有Ubuntu,Apache和php-fpm ( php版本是7.4)的配置。我的目标是能够存储TLS密钥,以便在Wireshark中解密TLS流量。我通常使用环境变量SSLKEYLOGFILE来实现这一点,但它似乎不适用于php-fpm。环境变量将添加到fpm池的配置文件中。出于测试目的,请使用以下PHP脚本:

代码语言:javascript
复制
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$output = curl_exec($ch);
echo $output;
curl_close($ch); 

我想指出的是,当使用cli执行脚本时,它会成功地将密钥写入文件,但在使用php fpm时,它不会写入任何内容。下面是php fpm池的配置:

代码语言:javascript
复制
[example]

user = user
group = user
clear_env = no
env[SSLKEYLOGFILE] = /my/path

listen = /run/php/php7.4-fpm_example.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

有什么想法我怎么才能修复它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-16 06:16:40

解决方案是使用调试器提取预主密钥。我找到了一个由Peter Wu编写的脚本的link,它使用GDB和Here自动化了这个过程。唯一的问题是Ubuntu上默认版本的libssl没有调试符号。然而,存在一个Ubuntu存储库,其中有来自官方存储库的所有二进制文件的调试版本。我使用了this Ubuntu Wiki页面中“获取-dbgsym.ddeb包”一节中的说明来启用它。然后安装带有调试符号的libssl:

代码语言:javascript
复制
 apt install libssl1.1-dbgsym

最后,我使用以下命令运行python脚本:

代码语言:javascript
复制
PYTHONPATH=.   gdb -q -ex  'py import sslkeylog as skl; skl.start("premaster.txt")' -p 65774

其中65774是对应的php-fpm进程的进程id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66995564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档