ssl_crtd 帮助程序在 squid 中崩溃得太快

ssl_crtd 帮助程序在 squid 中崩溃得太快

我正在使用 squid 的 sslBump 和动态 SSL 证书生成功能,下面是我对 sslBump 的配置

sslcrtd_program /usr/lib64/squid/ssl_crtd -s /usr/local/squid/var/lib/ssl_db -M 4MB sslcrtd_children 5

sslproxy_cert_error 允许所有

always_direct 允许所有

ssl_bump 客户端优先全部

sslproxy_cert_error 允许所有

sslproxy_flags DONT_VERIFY_PEER

http_port 3128 ssl-bump 生成主机证书=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl/myCA.pem

当我启动 squid 时遇到以下错误。

鱿鱼-d 23

2014/08/29 16:55:59 kid1| 将当前目录设置为 /var/cache/squid
2014/08/29 16:55:59 kid1| 启动适用于 x86_64-redhat-linux-gnu 的 Squid Cache 版本 3.4.4.2...
2014/08/29 16:55:59 kid1| 进程 ID 32150
2014/08/29 16:55:59 kid1| 流程角色:worker
2014/08/29 16:55:59 kid1| 有 1024 个文件描述符可用
2014/08/29 16:55:59 kid1| 正在初始化 IP 缓存...
2014/08/29 16:55:59 kid1| DNS 套接字创建于 [::],FD 7
2014/08/29 16:55:59 kid1| DNS 套接字创建于 0.0.0.0,FD 8
2014/08/29 16:55:59 kid1| 从 /etc/resolv.conf 添加域名 elitecore.co.in
2014/08/29 16:55:59 kid1| 从 /etc/resolv.conf 添加域名 elitecore.co.in
2014/08/29 16:55:59 kid1| 从 /etc/resolv.conf 添加名称服务器 203.88.135.194
2014/08/29 16:55:59 kid1| 从 /etc/resolv.conf 添加名称服务器 4.2.2.2
2014/08/29 16:55:59 kid1|helperOpenServers:启动 5/5 个“ssl_crtd”进程
2014/08/29 16:55:59.339 kid1| ErrorDetailManager.cc(254) 解析:剩余大小:72 内容:名称:X509_V_ERR_AKID_SKID_MISMATCH
详细信息:“%ssl_error_descr:%ssl_subj
2014/08/29 16:55:59.341 kid1| ErrorDetailManager.cc(254) 解析:剩余大小:125 内容:名称:X509_V_ERR_APPLICATION_VERIFICATION
详细信息:“%ssl_error_descr:%ssl_subject”
descr: “应用程序验证失败”

2014/08/29 16:55:59.341 kid1| ErrorDetailManager.cc(254) 解析:剩余大小:0 内容:
2014/08/29 16:55:59.341 kid1|日志文件:打开日志守护进程:/var/log/squid/access.log
2014/08/29 16:55:59.341 kid1|日志文件守护进程:打开日志 /var/log/squid/access.log
2014/08/29 16:55:59.341 kid1| 本地缓存摘要已启用;每 3600/3600 秒重建/重写一次
2014/08/29 16:55:59.341 kid1| 商店日志记录已禁用
2014/08/29 16:55:59.341 kid1|交换最大大小 0 + 262144 KB,估计有 20164 个对象
2014/08/29 16:55:59.341 kid1| 目标存储桶数量:1008
2014/08/29 16:55:59.341 kid1| 使用 8192 个存储桶
2014/08/29 16:55:59.341 kid1| 最大内存大小:262144 KB
2014/08/29 16:55:59.341 kid1| 最大交换大小:0 KB
2014/08/29 16:55:59.341 kid1| 使用最小负载存储目录选择
2014/08/29 16:55:59.341 kid1| 将当前目录设置为 /var/cache/squid
k kill2014/08/29 16:55:59.341 kid1| 已完成加载 MIME 类型和图标。
2014/08/29 16:55:59.427 kid1|AsyncCall.cc(18) AsyncCall: AsyncCall clientListenerConnectionOpened 已构造,this=0x7ff9b784a900 [call18]
2014/08/29 16:55:59.427 kid1| AsyncCall.cc(85) ScheduleCall: StartListening.cc(56) 将调用 clientListenerConnectionOpened(local=[::]:3128 remote=[::] FD 21 flags=9, err=0, HTTP Socket port=0x7ff9b727c528) [call18]
2014/08/29 16:55:59.427 kid1| HTCP 已禁用。
2014/08/29 16:55:59.427 kid1| Squid 插件模块已加载:0
2014/08/29 16:55:59.427 kid1| 适应支持已关闭。
2014/08/29 16:55:59.428 kid1|AsyncCallQueue.cc(51) fireNext:进入clientListenerConnectionOpened(本地=[::]:3128远程=[::] FD 21标志=9,err=0,HTTP套接字端口=0x7ff9b727c528)
2014/08/29 16:55:59.428 kid1|AsyncCall.cc(30) make:调用clientListenerConnectionOpened [call18]
2014/08/29 16:55:59.428 kid1| 接受 SSL 碰撞 HTTP 套接字连接,位于 local=[::]:3128 remote=[::] FD 21 flags=9
2014/08/29 16:55:59.429 kid1|AsyncCallQueue.cc(53) fireNext:离开clientListenerConnectionOpened(本地=[::]:3128远程=[::] FD 21标志=9,err=0,HTTP套接字端口=0x7ff9b727c528)
2014/08/29 16:55:59.429 kid1|警告:ssl_crtd #Hlpr0 已退出
2014/08/29 16:55:59.429 kid1| 运行的 ssl_crtd 进程太少(需要 1/5)
2014/08/29 16:55:59.429 kid1| 关闭 HTTP 端口 [::]:3128
2014/08/29 16:55:59.429 kid1|storeDirWriteCleanLogs:正在启动……
2014/08/29 16:55:59.429 kid1| 已完成。已写 0 篇帖子。
2014/08/29 16:55:59.429 kid1| 耗时 0.00 秒(0.00 条/秒)。
严重:ssl_crtd 帮助程序崩溃太快,需要帮助!

2014/08/29 16:55:59.429 kid1| helper.cc(625) helperShutdown: helperShutdown: ssl_crtd #Hlpr0 正在关闭。
2014/08/29 16:55:59.429 kid1| helper.cc(625) helperShutdown: helperShutdown: ssl_crtd #Hlpr0 正在关闭。
2014/08/29 16:55:59.429 kid1| helper.cc(625) helperShutdown: helperShutdown: ssl_crtd #Hlpr0 正在关闭。
2014/08/29 16:55:59.429 kid1| helper.cc(625) helperShutdown: helperShutdown: ssl_crtd #Hlpr0 正在关闭。

是否有任何配置更改或解决方法来解决此错误?使用 RHEL 6.4 和 Fedora 18 以及 squid 3.2.3、3.4.4、3.3.1 进行了测试

答案1

这可能是由于未初始化导致的,ssl_db可以squid使用以下命令创建:

ssl_crtd=$(find /usr -type f -name ssl_crtd)
$ssl_crtd -c -s /var/lib/ssl_db
chown -R squid /var/lib/ssl_db

并设置/etc/squid/squid.conf

sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 3 startup=1 idle=1

根据你的squid建造方式,你也可以使用 security_file_certgen

另请参阅 Squid 文档动态 SSL 证书生成

答案2

对我来说,我只需要初始化 SSL 数据库

sudo -u squid /usr/lib64/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB

答案3

我认为您提供的信息没什么用。它告诉我们辅助进程正在死亡,而且这种情况几乎是立即发生的,但没有告诉我们它们死亡的原因。

您可能会使用 strace 和/或 ltrace 获得一些线索。跟踪父进程(可能是 squid,以及分叉的子进程。(例如strace -f -p PIDstrace -ff -p PID)。这可能会向您显示这些进程在崩溃前正在做什么。如果 strace 没有给您有用的信息,请尝试 ltrace,但通常 strace 会给您所需的信息。

答案4

就我而言,squid 用户无法访问 ssl_crtd 的路径,日志中出现以下错误:

2021/11/26 09:07:02.781| ipcCreate: /home/claudiu/kits/squid-3.5.27/src/ssl/ssl_crtd: (13) Permission denied

一旦我将其移动到可访问的位置,它就可以工作了。

相关内容