Configurați IIS pentru a utiliza certificatele semnate de dvs. cu aplicația dvs., inclusiv autentificarea prin maparea certificatelor clientului IIS – blog.

, Author

Acum presupun că ați citit postarea mea anterioară despre cum să creați certificate autofirmate pentru dezvoltare și s-ar putea să vă fi lăsat cu gândul „Yay great! ….Dar cum le folosesc de fapt?”. Această postare pe blog vă va conduce pas cu pas prin procesul manual de configurare a IIS pe PC-ul sau serverul Windows pentru a utiliza certificatele autofirmate împreună cu autentificarea prin maparea certificatelor de client IIS.

Rețineți că în exemplele mele folosesc găzduirea mea localhost și un nume de domeniu aleatoriu, dar puteți face acest lucru pe IIS-ul serverului dvs. real dacă aveți o adresă IP statică de la furnizorul de servicii de internet sau de la compania de găzduire a domeniului dvs. precum și dacă ați configurat corect firewall-ul, router-ul etc. unde, în cele din urmă, puteți îndrepta numele dvs. de domeniu către acea adresă. DAR nu voi recomanda niciuna dintre acestea împreună cu certificatele autofirmate decât dacă clienții/utilizatorii dvs. sunt dispuși să primească și să instaleze certificatul root și client autofirmat. Un bun exemplu în acest sens este în cazul unui intranet închis în care aveți acces la toate computerele utilizatorilor finali, pentru că atunci puteți instala certificatele pe mașinile lor, ceea ce este necesar dacă nu doriți ca utilizatorii dvs. să primească o avertizare mare și grasă cu privire la problemele de încredere legate de certificatul dvs. de server autofirmat. Dacă sunteți în căutarea unei soluții comerciale demne de producție, ar trebui să achiziționați certificatele în loc să le semnați singuri. Așadar, acum că am lămurit acest aspect, folosesc un PC cu Windows 8.1 Pro, IIS 8.5 și Visual Studio Premium 2013. (Am testat, de asemenea, cu un Windows Server 2012 R2 Hyper-V VM pe PC-ul meu).

Instalarea IIS
Dacă nu ați instalat deja IIS pe mașina care va acționa ca server de găzduire, vă rugăm să faceți acest lucru apăsând butonul Windows pentru PC și căutați „Turn Windows features on or off” (sau mergeți la Control Panel și căutați). Verificați Internet Information Services și următoarele noduri copil. 1 completați instalarea IIS
(Dacă funcționați pe .NET 3.5, trebuie să verificați .NET Extensibility 3.5 și ASP.NET 3.5)

Pentru Windows Server 2012 mergeți la Server Manager Dashboard ➜ Faceți clic pe add roles and features ➜ Alegeți role-based sau feature-.based installation and go next ➜ Select the server ➜ Enable the server role called Web Server (IIS) and following child elements Server IIS

De asemenea, asigurați-vă că Application Development este bifat cu următoarele childnodes Server IIS application dev

Click OK and let Windows install.

Crearea proiectului nostru de probă
De dragul acestui demo vom crea o mini-aplicație foarte simplă pe care o vom găzdui în IIS local. (Puteți, de asemenea, pur și simplu să faceți un fork al meu direct la Github)

În Visual Studio, creați o nouă aplicație web goală și faceți referire la web api 5 New Project

Vom avea nevoie doar de un controler reeeeaally simplu:

using System.Web.Http;namespace IISWithCertificatesSample.WebApi.Controllers{ public class CatsController : ApiController { public IHttpActionResult Get() { return Ok("A lot of cats meowing for food"); } }}

Ar trebui să puteți acum să rulați ambele rute (F5) și să navigați la url-ul localhost cu /api/cats (al meu arată ca http://localhost:62172/api/cats). Minunat, haideți să găzduim această aplicație folosind IIS-ul nostru local.

NOTA: Nu vom mai rula aplicația direct din Visual Studio (F5) care este setat să folosească IIS Express.

Configurarea IIS
Deschideți IIS Manager (butonul Windows + căutare). Adăugați un nou site web și un pool de aplicații cu aplicația noastră de probă. (Faceți clic dreapta pe Sites ➜ Add Website) Calea trebuie să fie folderul în care se află documentele site-ului dvs. web, deci dacă ați publicat site-ul dvs. indicați calea acolo. Voi folosi doar calea directă către proiectul din Visual Studio pentru acest exemplu foarte simplu.

Acum să găzduim local acest site prin specificarea numelui de gazdă AKA. numele domeniului dvs. 7 yourdomain.com

Din moment ce găzduiesc doar local, trebuie să adaug site-ul la fișierul meu local hosts pentru a lega adresa mea IP localhost cu numele de gazdă. Acest lucru se face rulând notepad ca administrator și deschizând fișierul hosts din calea: %systemroot%\System32\drivers\etc fișier hosts

Adaugând următoarele la sfârșit: 127.0.0.1 yourdomain.com www.yourdomain.com 8 hosts file

Acum ori de câte ori voi naviga pe yourdomain.com și www.yourdomain.com de pe calculatorul meu, acesta va rezolva site-ul cu legăturile nou adăugate la adresa IP 127.0.0.1 (care este IP-ul localhost).

Să adăugăm www. binding la site-ul dumneavoastră și în IIS Manager 9 IIS bindings 10 add http binding 11 domain with www12 both http added

Să navigați la numele de domeniu pe care l-ați stabilit în bindings cu sau fără www. și adăugați terminația /api/cats și ar trebui să obțineți pisicile care miaună. (Dacă nu, încercați să goliți memoria cache)

IMPORTANT: Acest lucru se va întâmpla NUMAI pe mașina locală deoarece am modificat fișierul hosts pentru a redirecționa cererile noastre de la numele de domeniu pe care l-am adăugat la adresa IP localhost. Este menit pentru dezvoltare și pentru a vă putea testa modificările înainte de a le implementa pe serverul real de găzduire web.

Securizarea serverului cu SSL
Acum dorim să securizăm pisicile adăugând un certificat SSL la serverul nostru.
În IIS Manager mergeți la serverul dvs. (Partea de sus a arborelui din stânga) ➜ Derulați în jos și faceți dublu clic pe Certificate de server. 13 Server IIS

(Dacă certificatul autofirmat este deja aici, săriți la pașii de bindings)

Trebuie să importăm certificatul autofirmat al serverului nostru pentru a activa comunicarea https cu SSL, așa că dați clic pe Import… 14 Import server cert

Dați clic pe … și găsiți certificatul dumneavoastră .pfx, completați parola (parametrul -po din fișierul batch de comandă) și faceți clic pe OK 15 browse server cert

Certificatul dvs. este acum adăugat 16 cert added

Click dublu pe cert nou adăugat pentru a verifica dacă este de încredere (Certificatele dvs. autofirmate au fost adăugate în magazinele corecte în postarea mea anterioară, deci din nou: citiți-o dacă sunteți rătăciți acum ;-))

17 trusted server cert

Atât de departe, atât de bine! Acum putem adăuga legătura https, în același mod ca și înainte, dar alegeți https cu portul 443, domeniul dvs. ca nume de gazdă și găsiți certificatul autofirmat în lista derulantă

18 bindings add ssl

Verificați căsuța Server Name Indication care permite serverului nostru să aibă mai multe certificate instalate pe aceeași adresă IP prin trimiterea numelui de gazdă cu prima etapă a handshake-ului SSL. Repetați aceiași pași pentru a adăuga SSL pentru www.yourdomain.com, dar cu un certificat în care numele CN se potrivește cu numele domeniului sau cu un certificat wildcard
19 https www cu wildcard

Legăturile noastre sunt complete deocamdată

19 Toate legăturile

Tadaa, puteți folosi acum https://yourdomain.com/api/cats și https://www.yourdomain.com/api/cats

NOTA: Firefox nu utilizează magazinul de certificate Windows, așa că va trebui să adăugați manual CA-ul rădăcină. Mergeți la Firefox Settings ➜ Options ➜ Advanced ➜ View Certificates ➜ Authorities ➜ importați fișierul CARoot.cer

Autentificare prin maparea certificatului de client IAIS
Am trecut acum prin utilizările certificatelor root și server și probabil vă întrebați ce să faceți cu certificatul de client pe care l-am creat și în postarea mea anterioară. Acesta este destinat situațiilor în care, de exemplu, avem nevoie să autentificăm clienții fără o abordare de tip login și parolă de utilizator, ci mai degrabă dorim ca serverul să ceară clientului să arate certificatul său și, dacă acesta este cel corect, clientul este lăsat să intre. Acest lucru se poate face cu o cartografiere de tip Many-To-One sau One-To-One și vă voi arăta cum să le faceți pe ambele manual în IIS Manager.

În primul rând trebuie să instalăm caracteristica, așa că aduceți din nou „Turn Windows features on or off” și instalați următoarele 20 IIS client cert mapping

Vom spune serverului nostru să ceară un certificat SSL de la client 21 SSL Settings 22 apply require ssl

Apoi trebuie să configurăm serverul pentru a ști ce certificat de client trebuie să valideze, așa că mergeți la Editorul de configurare și alegeți secțiunea iisClientCertificateMappingAuthentication (puteți introduce și calea system.webServer/security/authentication/iisClientCertificateMappingAuthentication în câmpul Section) 24 secțiunea iisClientCertMapAuth

Many-To-One Mappings
Dacă doriți să mapezi mai multe certificate client pentru un singur utilizator, această abordare este cea de care aveți nevoie. Puteți, de asemenea, să partajați certificatele de client în acest mod, instalând certificatul de client (și certificatul CA Root, având în vedere că este vorba de un certificat auto-semnat) pe alți utilizatori de pe orice mașină pentru a obține acces, atâta timp cât certificatul de client corespunde criteriilor de reguli ale mapării. De exemplu, ar fi util într-o situație în care ați dori ca toți utilizatorii dintr-o organizație să obțină acces prin intermediul unei singure mape de utilizator.

Activați autentificarea certificatului de client pentru mape 25 enable client auth

Pentru a adăuga o mapare, faceți clic pe … din manyToOneMappings 26 add mapping

Aici adăugați utilizatorii cărora doriți să le acordați acces.27 add new mapping

Completați proprietățile pentru o cartografiere și repetați pentru fiecare utilizator pe care doriți să îl configurați pentru acces sau refuz. Amintiți-vă că aveți nevoie de certificatul clientului și de certificatul CA rădăcină instalate pe toate mmc-urile utilizatorilor.
28 manytoone mapping

IMPORTANT: Pentru ca acest lucru să funcționeze, trebuie să introduceți un nume de utilizator și o parolă valide și, din moment ce calculatorul meu este serverul, credențialele vor fi numele de utilizator și parola mea din Windows.

Acum trebuie să creăm niște reguli care să însoțească această cartografiere, astfel încât serverul să poată determina dacă unui client i se permite accesul sau nu. Este o așa că faceți clic pe proprietatea rules și pe butonul …

29 add rule

Voi adăuga o regulă ca exemplu în care serverul va verifica certificatul clientului pentru a vedea dacă este semnat de rădăcina CA corectă. Mergeți mai departe și adăugați mai multe reguli pentru mai multă siguranță, vă rugăm să vizitați referința IIS Many-To-One Mapping pentru mai multă documentație.
31 regulă

Amintiți-vă să aplicați modificările în IIS Manager, așa că închideți ferestrele de reguli și mape și faceți clic pe Apply 32 aplicați modificările

Deschideți o nouă fereastră de browser incognito pentru a vă asigura că porniți de la zero în ceea ce privește cache-ul și cookie-urile și introduceți adresa URL cu /api/cats și vedeți că browserul vă solicită un certificat. Alegeți ClientCert și faceți clic pe ok pentru a avea acces la pisici. 33 ok client cert

Dacă acest lucru nu funcționează, asigurați-vă că certificatul de client se află în magazinul CurrentUser/Personal, precum și în magazinul de certificate al browserului. Dacă da, atunci mergeți la Control Panel ➜ Internet Options ➜ Content și faceți clic pe Clear SSL state. 34 clear ssl state

Deschideți o nouă fereastră incognito și încercați din nou, browserul dvs. ar trebui să vă ceară acum certificatul clientului.

NOTA: Amintiți-vă că, așa cum am explicat mai devreme, Firefox are propriul său magazin de certificate, așa că trebuie să importați certificatul clientului în „Your Certificates” pentru a putea folosi acest lucru.

Corelări unu-la-unu
Să trecem și prin corelațiile unu-la-unu. Această abordare înseamnă că avem nevoie de un certificat de client individual pentru fiecare mapare de utilizator. Puteți fie să dezactivați maparea many-to-one și să folosiți același certificat și utilizator, fie să creați altele noi. Reveniți la Editorul de configurare și deschideți din nou secțiunea iisClientCertificateMappingAuthentication. Faceți clic pe … din oneToOneMappings. 35 enable one to one mappings

Pentru a adăuga maparea la certificat, trebuie să exportăm cheia publică a fișierului de certificat al clientului. Puteți exporta acest lucru din Consola de gestionare a mașinii (apăsați butonul Windows și căutați mmc) Faceți clic în magazinul personal al Certificatului mașinii locale și exportați certificatul ssl al clientului pe care doriți să îl utilizați fără cheia privată în format base64. Export client cert Woug private key base64 export

Dați click dreapta pe certificatul nou exportat și deschideți-l cu notepad. Eliminați toate întreruperile de linie din certificatul propriu-zis. Remover linebreaks

Acum copiați asta în câmpul de proprietate al certificatului din mapare și completați restul 38 add user mapping

IMPORTANT: Pentru ca acest lucru să funcționeze, trebuie să introduceți un nume de utilizator și o parolă valide și, din moment ce computerul meu este serverul, credențialele vor fi un nume de utilizator și o parolă Windows.

Încă o dată, nu uitați să aplicați modificările. 39 apply changes

Și gata, încercați și când vi se cere alegeți certificatul pe care l-ați mapat pentru utilizatorul pe care tocmai l-ați mapat.

Sper că v-a fost utilă această postare și pentru următoarea mea postare voi trece în revistă cum să folosesc certificate autofirmate împreună cu Windows Azure și cum să configurez IIS prin cod C#, aruncați o privire aici: http://blog.jayway.com/2015/04/21/configure-a-windows-azure-cloud-service-to-use-your-self-signed-certificates-for-iis-client-certificate-mapping-authentication/

Să ai o zi bună =)

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.