允许用户从没有证书客户端身份验证的 IP 地址进入

Joh*_*ohn 5 ssl certificate apache-2.2

我需要允许在没有来自我的办公室网络的 SSL 证书和外部有 SSL 证书的情况下访问我的网站。

这是我的配置:

 <Directory /srv/www>
  AllowOverride All

  Order deny,allow
  Deny from all
  # office network static IP
  Allow from xxx.xxx.xxx.xxx

  SSLVerifyClient require
  SSLOptions +FakeBasicAuth
  AuthName "My secure area"
  AuthType Basic
  AuthUserFile /etc/httpd/ssl/index
  Require valid-user
  Satisfy Any

 </Directory>
Run Code Online (Sandbox Code Playgroud)

当我在网络内部并拥有证书时 - 我可以访问。当我在网络内部并且没有证书时 - 我无法访问,它需要证书。

当我在网络外并且有证书时 - 我无法访问,它会显示我的基本登录屏幕 当我在网络外并且没有证书时 - 我无法访问,它会显示我基​​本登录屏幕

和以下配置完美地工作

 <Directory /srv/www>
  AllowOverride All

  Order deny,allow
  Deny from all
  Allow from xxx.xxx.xxx.xxx

  AuthUserFile /srv/www/htpasswd
  AuthName "Restricted Access"
  AuthType Basic
  Require valid-user
  Satisfy Any

 </Directory>
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 11

这是我如何实现的(xxx.xxx.xxx.xxx - 允许在没有证书的情况下访问此地址):

  SSLVerifyClient optional
  SSLOptions -FakeBasicAuth +StrictRequire -StdEnvVars -ExportCertData
  SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128

  RewriteEngine on
  RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
  RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
  RewriteRule   ^  -  [F]
Run Code Online (Sandbox Code Playgroud)

请注意, SSLVerifyClient 不应位于目录上下文中:

在每个目录上下文中,它会在读取 HTTP 请求之后但在发送 HTTP 响应之前强制使用重新配置的客户端验证级别进行 SSL 重新协商。