2

在我们的设置中,我们有数千名用户使用 apache(httpd-2.2.3-65.el5_8,mod_ssl-2.2.3-65.el5_8)在运行 rhel 5.8 的 linux 服务器上运行。我们的用户使用 PKI 登录系统。服务器上有 5 个 CA。当我们使用 apache prefork 模型时,一切正常。但是,当我们切换到 worker 模型时,大多数请求都可以正常处理,但是我们在ssl_error_log文件中遇到了很多错误,例如:

“[错误] 证书验证:错误 (20):无法获取本地颁发者证书”

如果我们使用单个 CA 运行工作模型,我们不会收到此错误。使用 prefork 模型时不会出现此错误。带有 worker 的 CA 捆绑不会发生这种情况ThreadsPerChild=1。只有 worker ( ThreadsPerChild>1) 与 ca 捆绑包而不是单个 CA 的组合会导致这种情况发生。

这是我们在 apache 配置文件中的 worker 配置:

<IfModule worker.c>
ServerLimit     250
StartServers         20
MaxClients         2050
MinSpareThreads     20
MaxSpareThreads     50
ThreadsPerChild     10
MaxRequestsPerChild  0
</IfModule>

并且 prefork 设置是:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit     2048
MaxClients      2048
MaxRequestsPerChild  4000
</IfModule>

与使用 prefork 相比,使用 worker 运行多个 CA 是否存在已知问题,或者我们是否需要正确调整 worker 配置以获得所需的行为?

4

1 回答 1

0

我敢打赌它是特定于工人的,而不取决于配置,而是工人的设计理念。有可能它是用 apache 2.4 修复的。您是否将整个链与每个证书保存在同一个文件中,或者您在单独的文件中使用虚拟主机证书和 CA 链?AFAIR 可以对 CA 证书使用两个指令,或者其他单个指令指向包含 vhost 证书和链的文件。

总而言之 - 如果有帮助,它将重新组织证书文件中的数据而不是配置。无论如何,您使用单独的 CA 证书很奇怪,您可能应该解决它,创建一个最高级别的 CA(例如提供者(您的)CA),并为低于某个级别的各种网站颁发证书,可能在链的中间使用 CA . 这样一来,您就有可能撤销特定 CA 的所有证书——这就是专业、大型认证公司和组织通常采用的方式。当您报告使用单线程/单 CA 时未显示问题时,我想您可以这样做。

个人祝贺使用 X509 身份验证/授权,很好有人使用它:)

于 2012-09-20T17:05:39.370 回答