Puncte:1

Eliminați conexiunile cu un certificat de client nepotrivit CN în proxy invers TCP nginx

drapel gb

Folosesc nginx pentru a adăuga funcționalitate TLS peste un server TCP existent (Redis) prin proxy-l așa (vă rugăm să citiți înainte de a spune „Redis are suport TLS încorporat”):

curent {
  Server {
    asculta 6379 ssl;

    ssl_certificate /etc/ssl/private/tls.crt;
    ssl_certificate_key /etc/ssl/private/tls.key;

    ssl_client_certificate /etc/ssl/private/ca.crt;
    ssl_verify_client activat;

    proxy_pass redis:679;
  }
}

Cu toate acestea, acest lucru va accepta toate certificate de client care au fost semnate de CA specificată. Aș dori să accept doar certificate de client cu un anumit CN: cn=api. Când fac proxy HTTP pot folosi un dacă afirmație ca aceasta

if ($ssl_client_s_dn != "CN=api") {
  întoarce 403;
}

Cu toate acestea, se pare că dacă astfel de declarații nu sunt permise în serverele de flux. Ca o soluție, am folosit un Hartă declarație pentru a direcționa cererile care nu se potrivesc cu CN la un amonte inexistent, ca acesta:

curent {
  în amonte redis_backend {
    server redis:6379;
  }

  harta $ssl_client_s_dn $backend_svr {
    "CN=api" redis_backend;
    implicit nul;
  }

  Server {
    ...

    proxy_pass $backend_svr;
  }
}

Cu toate acestea, nu pot să nu simt că trebuie să existe o modalitate mai bună de a respinge conexiunea pentru certificatele client nepotrivite.

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.