Apache-客户端证书

时间:2019-01-22 15:51:38

标签: apache ssl openssl ssl-client-authentication

客户端认证过程的目的仅仅是为了证明您在SSLCACertificateFile(在conf文件中)中拥有的CA已经为客户端担保了吗?如果CA是众所周知的CA,那么拥有该CA签名的公共证书的任何人都可以作为有效客户端通过?对于整个客户端身份验证这件事有些困惑。

1 个答案:

答案 0 :(得分:0)

是,但是:

  1. 例如,在私有设置中,您也可以使用私有内部CA,这样就可以控制谁获得证书。
  2. 看看SSLOptions directiveFakeBasicAuth案在某些情况下会有所帮助
  3. 更一般地说,您拥有SSLRequire directive,您可以在其中基于所提供证书的任何组件(例如其CN)来限制访问。

文档中给出的示例:

SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)-/                   \
            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd."          \
            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}    \
            and %{TIME_WDAY} -ge 1 and %{TIME_WDAY} -le 5          \
            and %{TIME_HOUR} -ge 8 and %{TIME_HOUR} -le 20       ) \
           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/

请注意,现在不推荐使用SSLRequire,而推荐使用Require,这几乎是它的严格超集。您在https://httpd.apache.org/docs/2.4/expr.html上有关于如何测试的详细信息,https://httpd.apache.org/docs/2.4/mod/mod_ssl.html的开头显示了可以测试的所有可能的“ SSL”变量,例如:

SSL_CLIENT_M_SERIAL     string  The serial of the client certificate
SSL_CLIENT_S_DN     string  Subject DN in client's certificate
SSL_CLIENT_S_DN_x509    string  Component of client's Subject DN