î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
Nu sunt sigur ce îmi lipsește! Va rog ceva ajutor?
Mulțumiri,
JE