通过证书授权(SSL)

通过证书授权(SSL)

有一个问题。

服务器包含证书(.crt)。并且有两个不同的用户。一个是在浏览器证书中设置的(.p12),该证书已对服务器证书进行签名。用户进入文件夹example.com/a

没有证书的用户进入example.com/b

如何使用 apache 设置?重定向?

对不起我的英语不好 :)

答案1

如果我理解正确的话,您可以使用 mod_rewrite 来实现这一点。我还没有测试过下面的配置,但它是一个你可以开始的地方……

在 SSL 设置中,您使用

SSLVerifyClient optional
SSLOptions +StdEnvVars

这意味着,如果客户端能够使用身份验证,您将允许它们使用身份验证,但即使它们不能连接,您也会允许它们连接。为了实现这一点,您还需要信任颁发客户端证书的 CA;这可以通过添加

SSLCACertificateFile path/to/file

到您的配置并在该文件中包含 CA 的证书。

然后,使用 mod_rewrite 检查由您批准的证书的客户端设置的环境变量:

 RewriteEngine on
 RewriteCond   %{SSL_CLIENT_VERIFY} SUCCESS
 RewriteRule   ^/(.*) /a/(.*) [L]

 RewriteCond   %{SSL_CLIENT_VERIFY} FAILED
 RewriteRule   ^/(.*) /b/(.*) [L]

相关内容