服务器支持客户机认证的三个级别和基于客户机证书信息的两种访问控制类型。
级别是用 SSLCLientAuth 伪指令设置的:
如果您选择客户机认证的必需级别,则安全服务器请求证书,而此证书来自发出 http 请求的所有客户机。 服务器通过检查本地密钥数据库中可信 CA 根证书,来确认客户机。 可信 CA 根证书是由认证中心签署的证书,而此认证中心被指定为您的服务器上的可信 CA。
如果客户机具有有效证书,则服务器建立一个安全连接。如果客户机具有已到期的证书,或该证书不是由被指定为服务器上可信 CA 的认证中心 (CA) 签署的,则服务器会拒绝请求。
注意,SSL 客户机认证将增加网络流量。
如果您选择可选级别,则服务器请求客户机证书。如果客户机未提供证书,则仍然建立安全连接。如果客户机提供了已到期的证书,或该证书不是由被指定为服务器上可信 CA 的认证中心 (CA) 签署的,则服务器会拒绝请求。
注意,SSL 客户机认证将增加网络流量。
如果您选择无,则安全服务器不请求来自客户机的证书。
类型是用 SSLFakeBasicAuth 或 SSLClientAuthRequire 伪指令设置的。
注: SSLClientAuthRequire 是客户机认证的首选类型。
建议不要使用 SSLFakeBasicAuth。 所生成以备 Apache SSL 代码(或 mod_ssl 与 Apache)使用的口令文件,将不能与 IBM HTTP Server 一起使用,因为专有名称的格式不同。
SSLFakeBasicAuth 类型是用于执行客户机认证的非常简便的方法。如果您指定 SSLFakeBasicAuth,则客户机证书的专有名称和口令(即 "password")以 Base64 编码,并放置在授权头中。在模块列表中,需要 mod_ibm_ssl 模块是第一个模块,以使后继认证模块将具有可用的伪基本认证用户标识和口令。 要知道的是,在指定的虚拟主机中的基本认证支持将不工作,因为用户提供的用户标识和口令,将由客户机的专有名称和口令(即 "password")覆盖。
要显示客户机认证的专有名称,创建打印 SSL_CLIENT_DN 环境变量的 CGI 程序。
更加广泛的 SSLClientAuthRequire 支持允许 Web 管理员定义包含 x509 属性的逻辑表达式。因而,为了授予或拒绝对对象的访问,可把这些逻辑表达式与客户机证书信息进行比较。然而,在发生所有的处理之前,GSK 首先确认客户机证书,以确保此证书是由可信认证中心签署的。
SSLClientAuthRequire 伪指令允许 Web 管理员构建逻辑表达式,该逻辑表达式由以 AND、OR 和 NOT 链接的属性检查组成。括号也是允许的。例如:
SSLClientAuthRequire (CommonName = "Fred Smith" OR CommonName = "John Deere") AND Org = IBM表示除非客户机证书包含公共名 Fred Smith 或 John Deere,并且组织必须为 IBM,否则将不服务对象。
对于属性检查,唯一有效的比较是等于和不等于(= 和 !=)。每个属性检查可由 AND、OR 或 NOT(也可以是 &&、|| 和 !)来链接. 当为一个资源指定多个 SSLClientAuthRequire 伪指令时, 对此资源的影响类似由布尔 AND 运算符连结的值。
括号用于将比较分组。 如果属性值包含非字母数字字符,则必须使用引号对该值进行定界。
有效属性如下:
IssuerStateOrProvince IssuerCommonName IssuerOrgUnit IssuerCountry IssuerLocality IssuerOrg IssuerEmail StateOrProvince CommonName OrgUnit Country Locality Org Email
下列短名也是有效的:
IST、ICN、IOU、IC、IL、IO、IE、ST、CN、OU、C、L、O 和 E