Назад | Перейти на главную страницу

сертификат клиента apache if-else условие

у меня есть <Location> внутри виртуального хоста, который выглядит так:

  <Location /app1/>
    SSLVerifyClient require
    SSLVerifyDepth 2
    SSLRequireSSL
    SSLOptions +OptRenegotiate
    SSLCipherSuite HIGH
    SSLRequire %{SSL_CLIENT_S_DN_OU} eq "Customer1" \
    or %{SSL_CLIENT_S_DN_OU} eq "Customer2" \
    or %{SSL_CLIENT_S_DN_OU} eq "Customer3"
 </Location>

Это требует, чтобы каждый, кто хочет получить доступ к / app1 /, предоставил серверу сертификат клиента. Бэкэнд-сервер - tomcat.

Можно ли «направлять» посетителей, не прошедших проверку подлинности, в другое место, кроме посетителей, у которых есть сертификат? Например. те, у кого нет сертификата, получают меньше функциональности ...

Спасибо

Вы можете использовать mod_rewrite, чтобы отправлять людей куда-нибудь еще.

Сначала вы должны настроить свой Apache так, чтобы он позволял людям без сертификата (т. Е. Использовать SSLVerifyClient optionalОбратите внимание, что это может не работать в некоторых браузерах. Проверьте это перед запуском.

Затем, в качестве второго шага, вы можете использовать mod_rewrite следующим образом:

RewriteEngine On
# Only match requests which don't have a proper client certificate
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !SUCCESS

# Prefix the URL for those people with /guest
RewriteRule ^/(.*)$ /guest/$1