Az IIS konfigurálása a saját aláírású tanúsítványok használatára az alkalmazással, beleértve az IIS ügyféltanúsítvány-társítási hitelesítést – blog.

, Author

Most feltételezem, hogy elolvastad az előző bejegyzésemet arról, hogyan hozz létre saját aláírású tanúsítványokat a fejlesztéshez, és lehet, hogy azt gondoltad: “Jaj, nagyszerű! ….De hogyan használhatom őket valójában?”. Ez a blogbejegyzés lépésről lépésre végigvezeti Önt az IIS kézi konfigurálásának folyamatán a számítógépén vagy Windows szerverén, hogy használja a saját aláírású tanúsítványait az IIS ügyféltanúsítvány-társítási hitelesítéssel együtt.

Kérem, vegye figyelembe, hogy a példáimban a localhost tárhelyemet és egy véletlenszerű domain nevet használok, de ezt megteheti a valódi szervere IIS-én, ha rendelkezik statikus IP-címmel az internetszolgáltatójától vagy a domain hosting cégétől, valamint helyesen konfigurálta a tűzfalat, routerét stb., ahol végül a domain nevét erre a címre tudja irányítani. DE nem ajánlom egyiket sem a saját aláírású tanúsítványokkal együtt, hacsak az ügyfelei/felhasználói nem hajlandóak fogadni és telepíteni a saját aláírású gyökér- és ügyféltanúsítványt. Jó példa erre egy zárt intranet, ahol hozzáférése van az összes végfelhasználó számítógépéhez, mert akkor telepítheti a tanúsítványokat a gépeikre, ami szükséges, ha nem akarja, hogy a felhasználók egy nagy, kövér figyelmeztetést kapjanak a saját aláírású szervertanúsítványával kapcsolatos bizalmi problémákról. Ha kereskedelmi termelésre alkalmas megoldást keres, akkor az önaláírás helyett inkább vásárolja meg a tanúsítványait. Most, hogy ezt már tisztáztuk, egy PC-t használok Windows 8.1 Pro-val, IIS 8.5-tel és Visual Studio Premium 2013-mal. (Egy Windows Server 2012 R2 Hyper-V VM-mel is teszteltem a PC-n).

IIS telepítése
Ha még nem telepítette az IIS-t a gépre, amely a tárhelykiszolgálóként fog működni, akkor tegye ezt meg a PC Windows gombjának megnyomásával és a “Windows funkciók be- vagy kikapcsolása” kereséssel (vagy menjen a Vezérlőpultra és keressen rá). Ellenőrizze az Internet Information Services és a következő fiókcsomópontokat. 1 teljes IIS telepítés
(Ha .NET 3.5 rendszert használ, akkor ellenőrizze a .NET Extensibility 3.5 és az ASP.NET 3.5)

Windows Server 2012 esetén lépjen a Kiszolgálókezelő műszerfalára ➜ Kattintson a Szerepek és funkciók hozzáadása gombra ➜ Válassza ki a szerepkör-alapú vagy a funkció-based installation (webkiszolgáló alapú telepítést), és menjünk tovább ➜ Válassza ki a kiszolgálót ➜ Engedélyezze a Webkiszolgáló (IIS) nevű kiszolgálói szerepet és a következő gyermekelemeket Server IIS

Egyőződjön meg arról is, hogy az Alkalmazásfejlesztés van bejelölve a következő gyermekelemekkel Server IIS application dev

Kattintson az OK gombra, és engedje a Windows telepítését.

Mintaprojektünk létrehozása
A bemutató kedvéért létrehozunk egy nagyon egyszerű mini alkalmazást, amelyet a helyi IIS-ben fogunk hosztolni. (Az enyémet akár közvetlenül a Githubon is forkolhatod)

A Visual Studióban hozz létre egy új üres webalkalmazást és hivatkozzunk a web api 5 New Project

Nekünk csak egy nagyon egyszerű kontrollerre lesz szükségünk:

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

Most már képesnek kell lenned mindkét útvonalat futtatni (F5) és a /api/cats segítségével a localhost url-re szörfölni (az enyém így néz ki http://localhost:62172/api/cats). Félelmetes, hosztoljuk ezt az alkalmazást a helyi IIS segítségével.

MEGJEGYZÉS: Az alkalmazást már nem közvetlenül a Visual Studio-ból (F5) fogjuk futtatni, amely az IIS Express használatára van beállítva.

IIS konfigurálása
Nyissuk meg az IIS Manager-t (Windows gomb + keresés). Adjunk hozzá egy új weboldalt és alkalmazáskészletet a mintaalkalmazásunkkal. (Jobb klikk a Sites ➜ Add Website) Az elérési útvonalnak annak a mappának kell lennie, ahol a weboldalunk dokumentumai találhatók, tehát ha már publikáltuk a weboldalunkat, akkor az elérési útvonalat mutassuk oda. Én ehhez a nagyon egyszerű példához a Visual Studio-ban a projekt közvetlen elérési útvonalát fogom használni.

Most pedig helyileg hosztoljuk ezt a webhelyet a host név, azaz a domain neved megadásával. 7 yourdomain.com

Mivel csak lokálisan hosztolok, hozzá kell adnom a webhelyet a helyi hosts fájlomhoz, hogy a localhost IP-címemet a hostnévhez kössem. Ez úgy történik, hogy rendszergazdaként futtatom a notepad programot, és megnyitom a hosts fájlt a következő elérési útvonalon: %systemroot%\System32\drivers\etc hosts file

A végére a következőket adom hozzá: 127.0.0.1 yourdomain.com www.yourdomain.com 8 hosts file

Most amikor a gépemen a yourdomain.com és a www.yourdomain.com oldalra szörfölök, az újonnan hozzáadott kötéseimmel a 127.0.0.1 IP címre (ami a localhost IP címe) fogja feloldani az oldalt.

Adjuk hozzá a www. kötést a webhelyünkhöz az IIS Managerben is 9 IIS kötések 10 add http binding 11 domain www-vel12 mindkét http hozzáadva

Surfeljünk a kötésekben beállított domain névre www-vel vagy www. nélkül, és adjuk hozzá a /api/cats végződését, és meg kell kapnunk a nyávogó macskákat. (Ha nem, próbáld meg kiüríteni a gyorsítótárat)

FONTOS: Ez CSAK a helyi gépen fog megtörténni, mert megváltoztattuk a hosts fájlt, hogy az általunk hozzáadott domain név kéréseit a localhost IP címre irányítsuk át. Ez fejlesztésre szolgál, és arra, hogy tesztelhessük a változtatásokat, mielőtt telepítjük őket a valódi webhosting szerverünkre.

A szerver biztosítása SSL-lel
Most szeretnénk biztosítani a macskákat egy SSL tanúsítvány hozzáadásával a szerverünkhöz.
Az IIS Managerben menjünk a szerverünkhöz (A fa tetején balra) ➜ Görgessünk lefelé, és kattintsunk duplán a Szerver tanúsítványokra. 13 IIS Server

(Ha a saját aláírású tanúsítványunk már itt van, ugorjunk előre a kötések lépéseihez)

A saját aláírású szervertanúsítványunkat importálnunk kell, hogy engedélyezzük a https kommunikációt SSL-lel, ezért kattintsunk az Importálás… 14 Import szervertanúsítvány

Kattintsunk a … és keressük meg a .pfx fájlt, töltse ki a jelszót (a parancskötegfájljában a -po paramétert) és kattintson az OK-ra 15 browse server cert

A tanúsítványa most hozzáadva 16 cert added

Dupla kattintás az újonnan hozzáadott certre, hogy ellenőrizze, megbízható-e (A saját aláírású tanúsítványai az előző bejegyzésemben a megfelelő tárolókba kerültek, tehát még egyszer: olvasd el, ha most eltévedtél ;-))

17 trusted server cert

So messze, olyan jó! Most már hozzáadhatjuk a https kötést, ugyanúgy, mint korábban, de válasszuk a https-t a 443-as porttal, a domainünket hostnévként, és keressük meg a saját aláírású tanúsítványunkat a legördülő listában

18 bindings add ssl

Pipáljuk be a Server Name Indication négyzetet, ami lehetővé teszi, hogy a szerverünk több tanúsítványt is telepítsen ugyanazon IP címre azáltal, hogy az SSL handshake első szakaszában a hostnevet is elküldi. Ismételje meg ugyanezeket a lépéseket a www.yourdomain SSL hozzáadásához.com, de olyan tanúsítvánnyal, ahol a CN név megegyezik a tartománynévvel, vagy egy wildcard tanúsítvánnyal
19 https www with wildcard

A kötéseink egyelőre befejeződtek

19 Minden kötés

Tadaa, most már használhatja https://yourdomain.com/api/cats és https://www.yourdomain.com/api/cats

JEGYZET: A Firefox nem használja a Windows tanúsítványtárát, ezért kézzel kell hozzáadni a gyökér hitelesítésszolgáltatót. Menj a Firefox Beállítások ➜ Beállítások ➜ Speciális ➜ Tanúsítványok megtekintése ➜ Hatóságok ➜ CARoot.cer fájl importálása

IIS Client Certificate Mapping Authentication
Most már végigmentünk a gyökér és kiszolgáló tanúsítványok használatán, és valószínűleg kíváncsiak vagytok, hogy mit kezdjetek az előző bejegyzésemben szintén létrehozott ügyféltanúsítvánnyal. Ez olyan helyzetekre vonatkozik, amikor például a kliensek hitelesítésére van szükségünk felhasználói bejelentkezés és jelszó megközelítés nélkül, hanem inkább azt szeretnénk, ha a kiszolgáló megkérné a klienst, hogy mutassa meg a tanúsítványát, és ha ez a megfelelő, akkor a kliens beléphet. Ez történhet sok-az-egyhez vagy egy-az-egyhez hozzárendeléssel, és megmutatom, hogyan lehet mindkettőt manuálisan elvégezni az IIS Managerben.

Először is telepítenünk kell a funkciót, ezért hozzuk elő újra a “Windows funkciók be- vagy kikapcsolása” menüpontot, és telepítsük a következőt 20 IIS kliens tanúsítvány leképezés

Megmondjuk a szervernek, hogy SSL tanúsítványt kérjen az ügyféltől 21 SSL beállítások 22 apply require ssl

Ezután be kell állítanunk a szervert, hogy tudja, melyik kliens tanúsítványát kell érvényesítenie, ezért menjünk a Konfigurációs szerkesztőbe, és válasszuk az iisClientCertificateMappingAuthentication részt (megadhatjuk a rendszer elérési útvonalát is.webServer/security/authentication/iisClientCertificateMappingAuthentication a Section mezőbe) 24 iisClientCertMapAuth szakasz

Many-To-One Mappings
Ha több ügyféltanúsítványt szeretne egyetlen felhasználóhoz rendelni, akkor erre a megközelítésre van szükség. A kliens tanúsítványokat is megoszthatjuk így, ha a kliens tanúsítványt (és a CA Root-t, mivel önaláíró tanúsítványról van szó) telepítjük más felhasználókra, bármelyik gépen is legyen a hozzáférés, amennyiben a kliens tanúsítvány megfelel a leképezés szabálykritériumainak. Ez például olyan helyzetben lenne hasznos, amikor azt szeretnénk, hogy egy szervezet összes felhasználója egyetlen felhasználói leképezésen keresztül kapjon hozzáférést.

Enable the client certificate mapping authentication 25 enable client auth

To add a mapping click the … of the manyToOneMappings 26 add mapping

Here you add the users that you want to get access.27 add new mapping

Töltse ki a leképezés tulajdonságait, és ismételje meg ezt minden olyan felhasználó esetében, akinek hozzáférést vagy megtagadást kíván beállítani. Ne feledje, hogy minden felhasználó mmc-jére telepíteni kell az ügyféltanúsítványt és a root CA tanúsítványt.
28 manytone mapping

FONTOS: Ahhoz, hogy ez működjön, meg kell adnia egy érvényes felhasználónevet és jelszót, és mivel az én számítógépem a szerver, a hitelesítő adatok a Windows felhasználónevem és jelszavam lesznek.

Most létre kell hoznunk néhány szabályt ehhez a leképezéshez, hogy a szerver meg tudja határozni, hogy egy ügyfél beléphet-e vagy sem. Ez egy tehát kattintsunk a rules tulajdonságra és a … gombra

29 add rule

Egy szabályt fogok hozzáadni példaként, ahol a kiszolgáló ellenőrzi az ügyfél tanúsítványát, hogy a megfelelő CA gyökér aláírta-e azt. Folytassa és adjon hozzá több szabályt a nagyobb biztonság érdekében, további dokumentációért látogasson el az IIS Many-To-One Mapping hivatkozásra.
31 szabály

Ne feledje, hogy a módosításokat az IIS Managerben kell alkalmazni, ezért zárja be a szabályok és a leképezések ablakát, és kattintson az Alkalmazás gombra 32 módosítások alkalmazása

Nyisson egy új inkognitó böngészőablakot, hogy biztosan tiszta lappal induljon a cache és a cookie-k tekintetében, és adja meg az url-t a /api/cats-sel, és lássa, hogy a böngésző kéri a tanúsítványt. Válassza ki a ClientCertet és kattintson az ok-ra, hogy hozzáférjen a macskákhoz. 33 ok client cert

Ha ez nem működik, győződjön meg róla, hogy a kliens tanúsítványa a CurrentUser/Personal tárolóban és a böngésző tanúsítványtárolójában is megtalálható. Ha igen, akkor lépjen a Vezérlőpult ➜ Internetes beállítások ➜ Tartalom és kattintson az SSL állapot törlése gombra. 34 clear ssl state

Nyisson egy új inkognitó ablakot és próbálja meg újra, a böngészőnek most már kérnie kell az ügyféltanúsítványt.

MEGJEGYZÉS: Ne feledje, ahogy korábban már elmagyaráztam, a Firefoxnak saját tanúsítványtárolója van, ezért a használatához importálnia kell az ügyféltanúsítványt a “Saját tanúsítványai”-ba.

Egy-az-egyhez megfeleltetések
Megnézzük az egy-az-egyhez megfeleltetéseket is. Ez a megközelítés azt jelenti, hogy minden egyes felhasználói leképezéshez egyedi ügyféltanúsítványra van szükségünk. Vagy letiltjuk a sok-az-egyhez leképezést, és ugyanazt a tanúsítványt és felhasználót használjuk, vagy újakat hozunk létre. Menjünk vissza a Konfigurációs szerkesztőbe, és nyissuk meg újra az iisClientCertificateMappingAuthentication részt. Kattintson a … a oneToOneMappings elemre. 35 enable one to one mappings

A tanúsítványhoz való hozzárendeléshez exportálnunk kell az ügyféltanúsítvány fájl nyilvános kulcsát. Ezt a gépkezelő konzolból exportálhatjuk (nyomjuk meg a Windows gombot és keressük meg az mmc-t) Snap-in a Local Machine’s Certificate’s personal store és exportáljuk a használni kívánt kliens ssl tanúsítványt a privát kulcs nélkül base64 formátumban. kliens tanúsítvány exportálása magánkulccsal base64 export

Jobb egérgombbal kattintson az újonnan exportált tanúsítványra, és nyissa meg a jegyzettömbbel. Magából a tanúsítványból távolítsa el az összes sortörést. Eltávolítsa a sortöréseket

Majd másolja be ezt a leképezés tanúsítványtulajdonság mezőjébe, és töltse ki a többit 38 add user mapping

FONTOS: Ahhoz, hogy ez működjön, meg kell adnia egy érvényes felhasználónevet és jelszót, és mivel az én gépem a szerver, a hitelesítő adatok Windows felhasználónév és jelszó lesznek.

Még egyszer ne felejtse el alkalmazni a módosításokat. 39 apply changes

És tessék, próbálja ki, és amikor a rendszer kéri, válassza ki a tanúsítványt, amit az imént hozzárendelt a felhasználóhoz.

Remélem, hasznosnak találta ezt a bejegyzést, a következő bejegyzésemben pedig azt fogom végigvenni, hogyan lehet saját aláírású tanúsítványokat használni a Windows Azure-ral együtt, és hogyan lehet az IIS-t C# kóddal konfigurálni, nézze meg itt: 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/

Have a good one =)

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.