Apache - 客户端证书

标签 apache ssl openssl ssl-client-authentication

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

最佳答案

是的,但是:

  1. 例如,在私有(private)设置中,您也可以使用私有(private)内部 CA,这样您就可以控制谁能获得证书。
  2. 查看SSLOptions directive , FakeBasicAuth 案例在某些情况下可以提供帮助
  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

关于Apache - 客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54311926/

相关文章:

sockets - 使用 FreeRadius 测试 RADSEC

.htaccess - SSL www 有效但并非没有

c - openSSL:如何初始化公钥加密的 key ?

linux - 将 cer 转换为 pem 时出现 OpenSSL 编码错误

c++ - 读取受 3DES 保护的 DSA 私钥

PHP 未在 Apache 上的 VirtualHost 中运行

apache - SVN "Can' t 打开文件 '.../db/txn-current-lock' : Permission denied"on import

java - 公共(public)资源池 : How to instantiate a concrete pool?

mysql - 高流量下的 Varnish 高数据库连接

apache - OpenCart 3.0.2.0 - 强制 SSL 并修复 "www".htaccess