Caut o configurație în care aș dori să am certificate de client SSL pentru toate IP-urile sursă, cu excepția uneia.
Ideea mea este să setez
ssl_verify_client opțional;
și pentru a adăuga o declarație if elaborată la locații.
Cu toate acestea, nu știu cum să scriu o astfel de declarație if.
# aceasta necesită certificate de client ssl pentru toate locațiile
Locație / {
dacă ($ssl_client_verify != „SUCCES”) {
întoarce 403;
...
}
# acum ce să scrieți pentru a solicita certificate ssl, cu excepția cazului în care IP-ul sursă este de ex. 1.2.3.4
locație /două {
dacă (?????) {
întoarce 403;
...
}
Editare: informații suplimentare
Schimbarea ssl_verify_client cu valoarea opțional
le spune clienților că pot, dar nu trebuie să trimită certificate de client.
Deci prin verificarea variabilei $var_ssl_client_verify Pot vedea dacă un certificat de client a fost prezentat și valabil (SUCCES
) sau nu.
Această regulă se aplică tuturor clienților care nu au un IP sursă dat. Pentru o anumită sursă IP nu vreau să verific certificatele client.
Ceea ce am nevoie este ceva de genul
if ($ssl_client_verify != „SUCCESS” și source_ip != 1.2.3.4 ) {
întoarce 403;
}
Editarea 2: Am schimbat titlul din
configurați nginx pentru a solicita certificate de client pentru toate, cu excepția unei date IP sursă
la
configurați nginx pentru a solicita anumite condiții pentru o locație pentru toate, cu excepția unei date IP sursă
deoarece ceea ce mă lupt cu adevărat nu are nimic de-a face cu certificatele clientului, ci cu combinarea declarațiilor if și filtrarea condiționată de adresa IP sursă.