Lucrul cu certificate

Pentru software-ul de securitate Windows Communication Foundation (WCF) sunt utilizate în mod obișnuit certificate X.509 digitale, prin care se realizează autentificarea clienților și servere, criptare și mesaje semnate digital. Această secțiune oferă o scurtă descriere a funcțiilor de a lucra cu certificate digitale X.509 și modul de utilizare a acestor funcții în WCF. În plus, această secțiune include link-uri către alte secțiuni pentru o explicație mai detaliată a conceptelor și a procedurilor de sarcini comune folosind WCF și certificate de bază.

Funcția principală a certificatului este un deținător de certificat al certificatului de autenticitate celorlalte părți. Certificatul conține cheia publică a proprietarului, în timp ce cheia privată este păstrată de către proprietar. Puteți utiliza cheia publică pentru criptarea mesajelor trimise titularului certificatului. Accesul la cheia privată este doar proprietarul certificatului, astfel încât numai el poate descifra aceste mesaje.

Certificatele trebuie să fie emise de către o autoritate de certificare, care este de obicei o terță parte certificate de editor. domeniu Windows include CA, care pot fi utilizate pentru a elibera certificate de calculatoare din domeniu.

În cazul în care certificatele de multe ori trebuie să le vizualizați și să verifice anumite proprietăți. Acest lucru este usor de realizat folosind o consolă de administrare (MMC). Pentru mai multe informații, consultați. În modul de a vizualiza certificatele folosind un MMC Snap-in.

magazin certificat

Certificatele sunt stocate în arhive. Există două stocare principale, care sunt împărțite în sub-stocare. administrator de computer poate vizualiza atât stocarea principală cu ajutorul fondurilor MMC. Utilizatorii care nu sunt administratorii pot vizualiza doar magazinul utilizatorului curent.

  • Computerul local. Certificatele care sunt accesate printr-un procese executabile de calculator, cum ar fi ASP.NET. Această locație este utilizată pentru a stoca certificatele, care să ateste autenticitatea server pentru clienți.
  • Depozitarea utilizatorului curent. aplicații interactive de obicei loc certificate la acest magazin pentru utilizator de computer curent. În cazul unei aplicații client în acest magazin sunt certificate de obicei plasate utilizate pentru autentificarea utilizatorului atunci când vă conectați la serviciu.

    Aceste două depozitare sub-divizat în depozit. Mai jos sunt cele mai importante sub-dispozitiv de stocare folosit la programarea cu WCF.

    • Trusted Root Certification Authorities. Certificatele de la acest magazin poate fi folosit pentru a crea un lanț de certificate, care pot fi urmărite înapoi la certificatul CA în magazin.

    Computerul local are încredere complet orice certificat este plasat în magazia, chiar dacă el nu a făcut de la o autoritate de certificare terță parte de încredere. Prin urmare, în acest magazin nu ar trebui să pună certificatele la editorii care nu au încredere deplină, sau în cazul în care efectele nu sunt clare.

  • Acest magazin privat este utilizat pentru a stoca certificatele asociate cu utilizatorul calculatorului. De obicei, în acest depozit stochează certificatele emise de către o autoritate de certificare a certificatelor care sunt în magazin „Trusted Root Certification Authorities“. Pe de altă parte, un certificat care se află în magazin poate fi eliberat în mod independent, și el va avea încredere în cererea.

    Pentru mai multe informații, vezi magazine de certificate. A se vedea de magazine certificat.

    Selectați stocare

    Alegerea unei locații de stocare a certificatului depinde de modul și a clientului sau de locul de serviciu. , Următoarele reguli generale.

    • În cazul în care serviciul WCF în serviciul de Windows, utilizați magazin local. Rețineți că privilegii de administrator sunt necesare pentru a instala certificatul în magazin local.
  • În cazul în care serviciul sau clientul este o aplicație care rulează pe numele contului utilizatorului, utilizați magazinul utilizatorului curent.

    Accesul la instalațiile de depozitare

    Lanțul de încredere și CAs

    Orice editor poate fi făcută rădăcină de încredere; pentru acest lucru este necesar pentru a pune certificatul editorului la certificatul autorităților rădăcină de încredere.

    Dezactivați încredere mecanism de verificare a lanțului

    Când creați un nou serviciu, utilizatorul poate utiliza certificatul care a fost emis de un alt CA decât mandatar, sau certificatul editorului să nu fie disponibil în magazinul „Trusted Root Certification autorităților“. Este posibil să se dezactiva temporar mecanismul, lanțul de certificate de control pentru un anumit certificat; Această posibilitate ar trebui să fie utilizat numai în procesul de dezvoltare. Pentru a dezactiva acest mecanism, setați valoarea proprietăților CertificateValidationMode PeerTrust sau PeerOrChainTrust. Aceste moduri precizează că certificatul poate fi eliberat fie prin ele însele (grup de colegi de încredere) sau să facă parte dintr-un lanț de încredere. proprietate a spus poate fi setat pentru oricare dintre următoarele clase.

    autentificarea utilizatorului

    CertificateValidationMode de proprietate, de asemenea, vă permite să personalizați modul în care validarea certificatului. Setarea implicită este ChainTrust. Pentru a utiliza valoarea personalizată. trebuie să instalați, de asemenea, atributul CustomCertificateValidatorType pentru asamblarea și tipul care sunt utilizate pentru verificarea certificatului. Pentru a crea un control de validare personalizată este necesară pentru a moșteni de la X509CertificateValidator clasă abstractă.

    Când creați o structură de autentificare personalizată a cea mai importantă metodă pe care doriți să înlocuiți o metodă Validează. Exemplu de a crea autentificarea utilizatorului structuri cm. Sub controlul de inspecție certificate X.509. Pentru mai multe informații, consultați. În secțiunea acreditările de utilizator și acreditări de verificare.

    Folosind programul Makecert.exe pentru a crea lanțul de certificate

    Mijloace de creare a certificatelor (Makecert.exe) vă permite să creați certificate X.509, precum și o pereche de chei publice și private. Cheia privată poate fi stocat pe disc, și apoi l utilizați pentru emiterea de noi certificate și semnături, care vă permite să simuleze ierarhia lanț de certificate. Instrumentul este destinat utilizării ca instrumente auxiliare în dezvoltarea serviciilor; nu ar trebui să fie utilizate pentru a crea certificate pentru desfășurarea efectivă. La proiectarea unui serviciu WCF, utilizați următoarea procedură pentru a crea un lanț de încredere cu ajutorul programului Makecert.exe.

    Crearea unui lanț de încredere cu ajutorul programului Makecert.exe

    Creați un CA certificat rădăcină temporară (auto-semnat), prin utilizarea programului MakeCert.exe. Salvați cheia privată de pe disc.

    Utilizați un nou certificat pentru eliberarea unui alt certificat care conține cheia publică.

    Importați certificatul la centrul rădăcină în magazin „Trusted Root Certification autorităților“.

    Selectarea certificatului de utilizat

    Cele mai frecvente întrebări despre certificatele sunt următoarele: un certificat de utilizat și de ce? Răspunsul depinde de ce programe utilizatorul - clientul sau serviciul. Următoarele sunt recomandări generale; trebuie să se înțeleagă că acestea nu sunt exhaustive răspunsuri la aceste întrebări.

    servicii de certificare

    Rețineți că acest câmp poate conține mai multe valori cu prefixe individuale. Cel mai adesea, „CN“ prefix este folosit pentru a indica numele comun, de exemplu, „CN = www.contoso.com“. În plus, câmpul Subiect poate fi gol; în acest caz, câmpul Nume alternativ subiect poate conține o valoare de câmp DNS-name.

    De asemenea, rețineți că terenul atribuit certificatului include o valoare corespunzătoare, cum ar fi „Server de autentificare“ sau „Autentificarea Client“.

    certificate client

    Certificatele client sunt de obicei eliberate nu de către terți CAS. Magazinul utilizatorului curent „privat“ conține de obicei certificate emise de către Root CA; în câmpul „Scopul“ certificatului este setat la „Autentificarea Client“. Clientul poate utiliza acest certificat, atunci când este necesară autentificarea reciprocă.

    Modul de revocare a certificatului de verificare în modul conectat la rețea și stand-alone

    certificatul

    Fiecare certificat este valabil numai pentru o perioadă predeterminată de timp, numit data de expirare. Valabilitatea este determinată de valorile câmpurilor valide din și certificat valid de X.509. În timpul controalelor de autentificare dacă certificatul a expirat.

    CRL

    CA poate revoca un certificat valabil în orice moment. Acest lucru se poate întâmpla din mai multe motive, cum ar fi atunci când certificat de cheie privată de compromis.

    În acest caz, toate lanțurile derivate din certificatul revocat ca invalid și mecanismele de autentificare nu mai ai încredere în ei. Pentru a se referă la revocarea certificatului de fiecare editor publică o listă de revocare a certificatelor. având o dată și oră. Această listă poate fi verificată de către regimul cu o conexiune la rețea sau offline, prin stabilirea una dintre valorile de enumerare X509RevocationMode pentru proprietatea sau RevocationMode DefaultRevocationMode următoarele clase: X509ClientCertificateAuthentication. X509PeerCertificateAuthentication. X509ServiceCertificateAuthentication și IssuedTokenServiceCredential. Valoarea implicită pentru toate proprietățile - Online.

    metoda SetCertificate

    În WCF, vi se cere adesea să stabilească un certificat sau un set de certificate care de serviciu, sau clientul va fi utilizat pentru autentificare, criptare sau un mesaj semnare. Acest lucru se poate face în mod programatic folosind metoda SetCertificate diferite clase care reprezintă certificatele X.509. Următoarele clase sunt folosite pentru a defini certificatul metoda SetCertificate.

    certificate multiple cu aceleași valori de câmp

    Depozitul poate conține mai multe certificate cu același nume subiect. Prin urmare, în cazul în care parametrul este setat x509FindType FindBySubjectName sau FindBySubjectDistinguishedName. și există un număr de certificate cu o astfel de valoare, există o excepție, deoarece, în acest caz, este imposibil să se determine care certificatul de utilizat. Acest lucru poate fi suprimată prin setarea valorii parametrului x509FindType FindByThumbprint. În documentul imprimat conține o valoare unică pe care o puteți utiliza pentru a căuta un certificat specific în magazin. Cu toate acestea, această abordare are un dezavantaj: în cazul în care certificatul a fost revocat sau actualizate, nu puteți efectua metoda SetCertificate ca marcajul original pe va fi găsit. În cazul în care certificatul nu este valabil, autentificarea nu este trecut. Acest lucru poate fi suprimată prin setarea valorii parametrului x590FindType FindByIssuerName și specificând numele editorului. Dacă specificați un editor nu este necesar, puteți seta, de asemenea, una dintre valorile de enumerare X509FindType. de exemplu FindByTimeValid.

    Certificate de configurare

    Certificatele pot fi, de asemenea, setat folosind configurația. În cazul unei acreditări de servicii, inclusiv certificatele specificate în secțiunea secțiunea serviceBehaviors. În cazul certificatelor software client specificate în secțiunea secțiunea endpointBehaviors.

    Compararea a certificatului într-un cont de utilizator

    În IIS și Active Directory oferă funcția de maparea certificatului într-un cont Windows. Pentru mai multe informații, consultați această caracteristică. Certificatele Secțiunea comparație cu conturile de utilizator.

    Dacă această funcție este activată, puteți seta proprietăți MapClientCertificateToWindowsAccount clasa X509ClientCertificateAuthentication la true. Configurația poate fi setat pentru elementul atribut mapClientCertificateToWindowsAccount adevărata valoare. așa cum se arată în următorul cod.