使用授权证书列表而不是证书颁发机构validationSSL客户端

是否有可能configurationApache(或任何其他SSL感知服务器)只接受来自预定义列表证书的客户端连接? 这些证书可以由任何CA签名(并且可以是自签名的)。

前一段时间,我尝试在我所工作的域名注册pipe理机构的EPP系统中获得客户端证书validation。 EPP协议规范要求使用“相互强大的客户端 – 服务器authentication”。 实际上,这意味着客户端服务器都必须validation会话中其他对等方的证书。

我们创build了一个私人authentication机构,并要求注册服务机构提交我们之后签署的CSR。 在我们看来,这似乎是最简单的解决scheme,但我们许多注册商反对:他们习惯于从CA获取客户端证书,并将该证书提交给注册pipe理机构。 所以我们不得不放弃这个系统。 我一直在试图find一种在我们的服务器上实现这个系统的方法,这个方法基于Apache的mod_epp模块。

使用SSLRequire可能仅仅使用核心mod_ssl。 我不确定你想要的确切的SSLvariables,但这样的事情应该工作:

{file(“/ tmp / list”)}中的SSLRequire%{SSL_CLIENT_S_DN_UID}

或者,您可以将某些证书属性映射到通常来自HTTP身份validation(.htaccesstypes限制)的用户名:

的.htaccess:

SSLOptions + FakeBasicAuth SSLUserName SSL_CLIENT_S_DN_CN AuthGroupFile / tmp / SSL_Groups要求组my-users

的/ tmp / SSL_Groups:

my-users:uid = bob,dc = site,dc = com uid = jane,dc = site,dc = com

再一次,我不是100%的SSL_CLIENT_S_DN_CN,但你明白了。

您应该能够设置一个包含您所信任的所有CA证书的目录,然后使用SSLCACertificatePath指令指向该目录,以便您可以基于任何证书进行身份validation。 然后,如杰夫提到使用SSLRequire限制访问您想要允许的证书的集合。

如果你的系统还没有安装一套通用的CA证书,那么你可以从其他地方复制它们。 Debian的电子证书包可能是一个很好的起点。