将对 apache 上的 vhost 的访问限制为仅限一个域的证书

将对 apache 上的 vhost 的访问限制为仅限一个域的证书

我需要一个 Apache 服务器来提供多个虚拟主机。每个虚拟主机只能由一个客户访问。为了清楚起见,我将举一个小例子:

  • vhost1:服务器名称:cust1.example.com
  • vhost2:服务器名称:cust2.example.com

现在,只有来自 customer1 的主机才能够访问 vhost1,只有来自 customer2 的主机才能够访问 vhost2。以下是我目前所做的:

  • 使用 openxpki 设置 CA(有效)
  • 为每个虚拟主机创建一个证书,并适当配置虚拟主机(有效)
  • 将 CA 的根证书导入到服务器和客户端(有效)
  • 测试 Client-SSL-Auth 是否能在没有过滤的情况下工作。(有效)

但现在我无法让过滤工作。我想过滤证书中的 CN。对于 vhost1,这意味着所有带有“*.cust1.example.com”CN 的证书都将被允许访问资源。我该如何实现这一点?

奖励:如果能用 Puppet 来管理变更就更好了

问候,克里斯蒂安

答案1

为每个客户创建一个(中间或根)CA,并使用它为每个客户颁发证书可能会更容易

然后你需要将每个 vhost 配置为要求客户端提供证书,并确保使用适当的 CA 来验证其证书(例如,每个客户/虚拟主机/域的 SSLCACertificateFile 都是唯一的)。

一种文件/CA 较少的方法(但可能更容易出错)可能涉及单个客户端 CA,并使用 SSLRequire 来匹配客户端证书中设置的 O(组织)或 OU 字段(它避免需要为看起来像“Bob Smith.the.customer.domain.tld”的人提供 CN)。

https://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslrequire了解详情。

相关内容