Puncte:0

Respingerea conexiunilor bazate pe un model în nginx

drapel vn

în nginx.conf am adăugat o clauză if pentru a filtra conexiunile ssl pe baza cn.

De exemplu

harta $ssl_client_s_dn $ssl_client_s_dn_cn {
    Mod implicit "";
    ~/CN=(?<CN>[^/]+) $CN;
}

Server {
    asculta 80 default_server;
    nume_server nginx-server;
    returnează 301 https://$server_name$request_uri;

    asculta 443 ssl;
    asculta [::]:443 ssl;
    
    nume_server nginx-server;
    
    certificat_ssl /path/to/server/cert.pem
    ssl_certificate_key /path/to/nginx-server/privatekey.pem

    Locație / {

        if ($ssl_client_s_dn_cn !~ „client”) {
            întoarce 403;
        }
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
}

Acum, din linia de comandă, încerc să curl furnizând un certificat care are un DN similar cu C=GB,ST=Londra,L=Oraș,O=MyOrg,OU=myOU,CN=client Primesc eroarea 403.

Am incercat si cu alte certificate, indiferent de certificatul DN/CN, am observat ca Nginx returneaza 403. În jurnalele de acces am încercat să înregistrez $ssl_client_s_dn valoare în jurnale, dar vine un gol.

Am luat referința de la http://nginx.org/en/docs/http/ngx_http_ssl_module.html

Ce îmi lipsește aici?

Actualizați:

Dacă codific valoarea în următoarea funcție pentru a returna clientul, funcționează bine:

harta $ssl_client_s_dn $ssl_client_s_dn_cn {
„client” implicit;

}

Observ că valoarea lui ssl_client_s_dn ar putea fi goală conform jurnalelor nginx. Are ceva de-a face cu activarea modulului ngx_http_ssl_module?

Am verificat $ nginx V Cred că modulul este listat.

Ieșirea este atașată într-o imagine introduceți descrierea imaginii aici

Nu sunt sigur ce îmi lipsește! Va rog ceva ajutor?

Mulțumiri, JE

Ivan Shatsky avatar
drapel gr
Folosiți `,` char în loc de `/` așa cum se arată în [acest] răspuns (https://stackoverflow.com/a/64899673/7121513).
java_enthu avatar
drapel vn
Mulțumesc pentru comentariu @IvanShatsky. Mi-am dat seama că problema era cu o directivă lipsă. L-as posta ca raspuns pentru a putea fi de folos altora. Apreciez că cineva a aruncat o privire la întrebare și a postat un comentariu. Mulțumiri.
Puncte:0
drapel vn

Am reusit sa o repar. Afișați soluția aici în cazul în care ar putea ajuta pe cineva în aceeași barcă.

În configurațiile mele lipsește un pic ssl_verify_client opțional; până când specificăm am aflat că, dacă nu menționăm ssl_verify_client on sau opțional, variabila $ssl_client_s_dn nu este setată. Se va imprima în continuare gol.

În retrospectivă, este logic că, fără a activa verificarea clientului, ce va face serverul cu subiectul client client DN. Cu toate acestea, aș fi mai fericit dacă jurnalele nginx ar menționa directiva lipsă. A trebuit să-mi dau seama prin încercare și eroare. Dar mă bucur că în sfârșit a funcționat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.