Care este diferența dintre un „certificat de client” X.509 și un certificat SSL normal? (Securitatea informațiilor, Autentificare, Tls, Certificate, Infrastructură Cu Cheie Publică)

Brandon Yarbrough a intrebat.

Creez un serviciu web prin intermediul căruia compania mea va comunica cu un număr de servicii ale unor clienți comerciali. Vom face schimb de informații utilizând SOAP. Aș dori să gestionez autentificarea cu certificate SSL furnizate de ambele părți, dar nu știu dacă există o diferență fundamentală între tipurile de certificate.

Când oamenii vorbesc despre HTTPS, vorbesc despre obținerea unui certificat SSL de la Verisign sau de la o altă autoritate. Când vorbesc despre autentificarea pe partea clientului, vorbesc despre obținerea unui certificat X.509. Sunt aceste două cuvinte pentru același lucru, unul poate fi transformat în celălalt sau există o altă diferență pe care nu o înțeleg?

4 răspunsuri
Steve

Un certificat X509 este un tip de cheie publică într-o pereche de chei publice/private. Aceste perechi de chei pot fi utilizate pentru diferite lucruri, cum ar fi criptarea prin SSL sau pentru identificare. Certificatele SSL sunt un tip de certificat X509. SSL funcționează prin criptarea traficului, precum și prin verificarea părții (Verisign are încredere că acest site web este cine spune că este, prin urmare, probabil că și dumneavoastră ați putea fi). Verisign acționează ca o autoritate de certificare (CA). CA este de încredere în sensul că tot ceea ce spune trebuie luat drept adevăr (funcționarea unei CA necesită considerații majore de securitate). Prin urmare, dacă o AC vă oferă un certificat care spune că are încredere că sunteți într-adevăr dumneavoastră, aveți un certificat de utilizator/certificat de client.

Unele dintre aceste tipuri de certificate pot fi utilizate în general, dar altele pot fi utilizate doar pentru anumite activități.

Dacă deschideți un certificat în Windows (navigați către ceva prin SSL în IE și uitați-vă la proprietățile certificatului) sau rulați certmgr.msc și vizualizați un certificat, uitați-vă la fila Details > Key Usage. Aceasta va dicta ce are voie să facă/utilizeze certificatul.

Pentru SOAP, certificatul poate fi utilizat pentru două lucruri: identificare și criptare. Ei bine, trei, dacă includeți semnăturile mesajelor (hashing-ul mesajelor).

Certificatele de client identifică clientul sau utilizatorul apelant. Atunci când aplicația face o cerere SOAP, aceasta transmite certificatul serviciului web pentru a-i spune cine face cererea.

Comentarii

  • Deci toate certificatele SSL sunt certificate x509, ceea ce înseamnă că pot să iau un certificat SSL de la Verisign și să-l folosesc pentru cererile clienților. Totuși, un certificat X509 nu are neapărat setări de utilizare care să permită identitatea sau autentificarea. Super, mulțumesc! –  > Por Brandon Yarbrough.
  • @CaptainAwesomePants, este posibil să puteți utiliza certificatul SSL de la Verisign ca certificat de client. Dacă utilizarea cheii nu include Autentificare client, atunci probabil că nu va fi acceptată pentru autentificarea clientului. –  > Por Zoredache.
  • Frumos răspuns. Dar intro-ul tău este o afirmație greșită și confuză: „Un certificat X509 este un tip de pereche de chei publice/private.” Dacă cheia privată era acolo, nu puteai să o publici…. Ai putea să repari asta? –  > Por nealmcb.
  • @nealmcb actualizat. Aveți dreptate, însă în lumea .NET dev, un X509Certificate poate conține și cheia privată. Cred că de aceea am scris ceea ce am scris. –  > Por Steve.
  • @CaptainAwesomePants de fapt, nu toate certificatele SSL/TLS sunt certificate X.509. Puteți utiliza certificate OpenPGP (a se vedea RFC 5081 tools.ietf.org/html/rfc5081 ), dar este destul de rar (puține stive le acceptă, din câte știu eu). –  > Por Bruno.
D.W.

În TLS, serverul trebuie să aibă o cheie privată și un certificat (uneori cunoscut sub numele de server cert). Certificatul serverului identifică și autentifică serverul. Clientul poate avea, opțional, propria cheie privată și propriul certificat (denumit de obicei cert client). În cazul în care se utilizează un certificat de client, acesta identifică și autentifică clientul.

Pe web, cu HTTPS, de obicei serverul are un certificat de server, dar nu se folosesc certificate de client. Acest lucru înseamnă că clientul poate autentifica serverul cu care vorbește, dar serverul nu poate autentifica clientul care se conectează la el.

Cu toate acestea, în multe contexte programatice, în mod normal, veți dori ca ambele puncte finale să se autentifice reciproc. Prin urmare, veți dori să utilizați atât certificatele serverului, cât și certificatele clientului.

În TLS, toate certificatele sunt certificate X.509. X.509 reprezintă doar formatul datelor.

Certificatele includ o cheie publică și o semnătură de la o autoritate de certificare (CA). Pe web, în mod obișnuit, site-urile web au un certificat de server care este emis (semnat) de Verisign sau de o altă CA cunoscută. Browserele web sunt livrate cu o listă de aproape 100 de CA-uri diferite, preinstalate, iar cele mai utilizate site-uri web au un certificat de server emis de una dintre aceste CA-uri. De exemplu, Verisign este una dintre CA-urile din lista standard de CA-uri a fiecărui browser. Verisign vă cere bani, dacă doriți să vă elibereze un cert.

Alternativa la obținerea certificatului semnat de o autoritate de certificare standard este că puteți utiliza un certificat autofirmat: un certificat care nu este emis de una dintre autoritățile de certificare standard, ci de dumneavoastră (sau de oricine doriți). Acest lucru nu este foarte utilizat pe scară largă pe internet, deoarece certificatele de server autofirmate determină browserele să afișeze ferestre de dialog de avertizare pentru utilizator, lucru pe care majoritatea site-urilor încearcă să îl evite. Cu toate acestea, pentru utilizări programatice, certificatele autofirmate pot funcționa bine. Iar dacă folosiți certificate autofirmate, nu trebuie să plătiți bani Verisign. Puteți găsi tutoriale despre cum să folosiți instrumentele de linie de comandă ale OpenSSL pentru a crea propriile certificate autofirmate.

SSL este un sinonim pentru TLS. (Din punct de vedere tehnic, SSL este numele care a fost folosit cu mai multe versiuni mai vechi ale standardului, iar TLS este un nume nou pentru mai multe versiuni mai recente ale standardelor. Cu toate acestea, mulți oameni folosesc cei doi termeni în mod interschimbabil).

Vă încurajez să citiți articolul din Wikipedia despre certificatul cu cheie publică pentru mai multe informații utile.

Comentarii

  • (comentariu similar cu cel din celălalt răspuns): strict vorbind, nu toate certificatele TLS sunt certificate X.509, și tocmai am observat că RFC 5081 a fost actualizat recent: RFC 6091 tools.ietf.org/html/rfc6091 –  > Por Bruno.
  • Pentru ca un server să suporte autentificarea certificatului de client, este necesar ca serverul să suporte și serverul SSL? Când citesc tutoriale privind autentificarea prin certificat client, toate par să sugereze că serverul trebuie să aibă și un certificat SSL. –  > Por CMCDragonkai.
  • @CMCDragonkai, da. Certificatele de client sunt folosite cu SSL/TLS, deci serverul trebuie să folosească SSL/TLS. Pe viitor, vă rugăm să puneți întrebări noi într-o întrebare separată, nu ca comentarii sub o întrebare existentă. –  > Por D.W..
AviD

Certificatele SSL „normale” sunt de obicei sunt Certificatele X.509.
Cu toate acestea, acestea pot fi utilizate numai pentru autentificarea și criptarea serverului: Unul dintre atributele certificatelor este scopul pentru care sunt desemnate și, de obicei, nu le puteți utiliza în alt scop.
Cu toate acestea, în afară de acest aspect, un certificat de client este aproape identic cu un certificat de server, doar că este desemnat ca „Autentificare client”.

Din punct de vedere funcțional, veți constata adesea că unele sisteme aleg să accepte doar un subset de certificate de client, de exemplu, cele emise de propria lor AC.

Jeff Ferland

Din punct de vedere funcțional, acestea sunt identice – o cheie publică RSA și informații de identificare semnate de o autoritate. Practic, cheile de server sunt de obicei configurate cu un nume comun care identifică domeniul în cauză (*.wikimedia.org, de exemplu). Nu cred că există nimic care să vă limiteze să folosiți un certificat, inclusiv cel generat de dumneavoastră, atâta timp cât acesta corespunde cerințelor de autentificare ale celeilalte părți.