Määritä IIS käyttämään itse allekirjoitettuja varmenteita sovelluksessasi, mukaan lukien IIS-asiakasvarmenteen kartoituksen todennus – blogi.

, Author

Oletan nyt, että olet lukenut edellisen postaukseni siitä, miten luoda itse allekirjoitettuja varmenteita kehitystyötä varten, ja se on saattanut jättää sinut ajattelemaan: ”Jee, hienoa! ….Mutta miten oikeastaan käytän niitä?”. Tämä blogikirjoitus vie sinut askel askeleelta läpi manuaalisen prosessin, jossa IIS konfiguroidaan tietokoneellasi tai Windows-palvelimellasi käyttämään itse allekirjoitettuja varmenteita yhdessä IIS:n asiakasvarmentekartoitustodennuksen kanssa.

Huomaa, että käytän esimerkeissäni localhost-hostingia ja satunnaista verkkotunnusta, mutta voit tehdä tämän oikean palvelimesi IIS:llä, jos sinulla on internet-palveluntarjoajaltasi tai verkkotunnuksen isännöintiyhtiöltä saatava staattinen IP-osoite ja jos olet myös konfiguroinut palomuurisi, reitittimesi yms. kunnolla, jolloin voit osoittaa verkkotunnuksen nimen tuohon osoitteen. MUTTA en suosittele kumpaakaan yhdessä itse allekirjoitettujen varmenteiden kanssa, elleivät asiakkaasi/käyttäjäsi ole halukkaita vastaanottamaan ja asentamaan itse allekirjoitettuja pää- ja asiakasvarmenteita. Hyvä esimerkki tästä on suljettu intranet, jossa sinulla on pääsy kaikkiin loppukäyttäjien tietokoneisiin, koska silloin voit asentaa varmenteet heidän koneisiinsa, mikä on välttämätöntä, jos et halua, että käyttäjät saavat ison varoituksen luottamusongelmista itse allekirjoitetun palvelinvarmenteen kanssa. Jos etsit kaupalliseen tuotantoon soveltuvaa ratkaisua, sinun kannattaa ostaa varmenteet itse allekirjoittamisen sijaan. Nyt kun tämä on selvitetty, käytän tietokonetta, jossa on Windows 8.1 Pro, IIS 8.5 ja Visual Studio Premium 2013. (Olen testannut myös Windows Server 2012 R2 Hyper-V VM:llä tietokoneellani).

IIS:n asentaminen
Jos et ole vielä asentanut IIS:ää koneeseen, joka toimii isännöintipalvelimena, tee se painamalla PC:n Windows-painiketta ja etsimällä hakusanalla ”Windows-ominaisuuksien kytkeminen päälle tai pois päältä” (tai menemällä Ohjauspaneeliin ja etsimällä). Tarkista Internet Information Services (Internetin tietopalvelut) ja seuraavat alisolmut. 1 complete IIS install
(Jos käytössäsi on .NET 3.5, sinun on tarkistettava .NET Extensibility 3.5 ja ASP.NET 3.5)

Windows Server 2012:ssa siirry Server Manager Dashboardiin ➜ Napsauta Lisää rooleja ja ominaisuuksia ➜ Valitse roolipohjainen tai ominaisuus-based installation ja siirry seuraavaan ➜ Valitse palvelin ➜ Ota käyttöön palvelinrooli nimeltä Web Server (IIS) ja seuraavat lapsielementit Server IIS

Varmista myös, että Application Development on valittuna ja seuraavat lapsielementit Server IIS application dev

Klikkaa OK ja anna Windowsin asentaa.

Esimerkkiprojektimme luominen
Tämän demon vuoksi luomme todella yksinkertaisen minisovelluksen, jota isännöimme paikallisessa IIS:ssä. Mahtavaa, isännöidään tätä sovellusta paikallisen IIS:n avulla.

Huomautus: Emme enää aja sovellusta suoraan Visual Studiosta (F5), joka on asetettu käyttämään IIS Expressiä.

IIS:n konfigurointi
Avaa IIS Manager (Windows-painike + haku). Lisää uusi verkkosivusto ja sovellusallas esimerkkisovelluksellamme. (Klikkaa hiiren kakkospainikkeella Sivustot ➜ Lisää verkkosivusto) Polun on oltava se kansio, jossa verkkosivustosi dokumentit sijaitsevat, joten jos olet julkaissut verkkosivustosi, osoita polku sinne. Käytän tässä hyvin yksinkertaisessa esimerkissä vain suoraa polkua Visual Studiossa olevaan projektiin.

Nyt isännöidään tätä sivustoa paikallisesti määrittelemällä isäntänimi AKA. verkkotunnuksesi. 7 yourdomain.com

Koska isännöin vain paikallisesti, minun on lisättävä sivusto paikalliseen hosts-tiedostooni, jotta localhostin IP-osoite voidaan sitoa isäntänimeen. Tämä tapahtuu ajamalla notepad järjestelmänvalvojana ja avaamalla hosts-tiedosto polulla: %systemroot%\System32\drivers\etc hosts-tiedosto

Lisäämällä loppuun seuraavat: 127.0.0.1 yourdomain.com www.yourdomain.com 8 hosts-tiedosto

Nyt aina kun surffaan yourdomain.com:iin ja www.yourdomain.com koneellani, se ratkaisee sivuston äsken lisätyillä sidonnaisuuksillani 127.0.0.1 IP-osoitteeseen (joka on localhostin IP-osoite).

Lisätään www. sidonta sivustoosi myös IIS Managerissa 9 IIS bindings 10 add http binding 11 domain with www12 both http added

Surffataan sidonnoissa määrittelemääsi verkkotunnukseen www:llä tai ilman www:tä ja lisätään pääte /api/cats, niin pitäisi löytyä meowing cats. (Jos ei onnistu, kokeile tyhjentää välimuisti)

TÄRKEÄÄ: Tämä tapahtuu AINOASTAAN paikallisella koneella, koska muutimme hosts-tiedostoa niin, että se ohjaa lisäämämme domain-nimen pyynnöt localhostin IP-osoitteeseen. Se on tarkoitettu kehitykseen ja siihen, että voit testata muutoksesi ennen kuin otat ne käyttöön oikealle web hosting-palvelimellesi.

Palvelimen suojaaminen SSL:llä
Jatkossa haluamme suojata kissat lisäämällä SSL-varmenteen palvelimellemme.
IIS-hallinnassasi siirry palvelimellesi (Vasemmalla olevan puun yläreunassa) ➜ Selaa alaspäin ja kaksoisnapsauta Palvelinvarmenteet. 13 IIS-palvelin

(Jos itse allekirjoitettu varmenne on jo tässä, hyppää eteenpäin sitomisen vaiheisiin)

Meidän on tuotava itse allekirjoitettu palvelinvarmenne voidaksemme ottaa käyttöön https-viestinnän SSL:llä, joten napsauta Tuo… 14 Tuo palvelinvarmenne Tuo palvelinvarmenne

Knapsauta … ja etsi .pfx-tiedoston, täytä salasana (komentojonotiedostosi -po -parametri) ja napsauta OK 15 browse server cert

Varmenteesi on nyt lisätty 16 cert added

Kaksoisklikkaa äskettäin lisättyä varmentetta tarkistaaksesi, että se on luotettu (Itsesigneeratut varmenteesi lisättiin oikeisiin säilytyspaikkoihin aiemmassa kirjoituksessani, joten vielä kerran: lue se, jos olet nyt eksyksissä ;-))

17 trusted server cert

So far, so good! Nyt voimme lisätä https-sidonnan, samalla tavalla kuin aiemmin, mutta valitsemme https:n portilla 443, verkkotunnuksesi isäntänimeksi ja etsimme itse allekirjoitetun varmenteesi pudotusvalikosta

18 bindings add ssl

Rastita Server Name Indication -ruutu, jonka avulla palvelimellamme voi olla useampia varmenteita asennettuna samaan IP-osoitteeseen lähettämällä isäntänimen SSL:n kädenväännön ensimmäisen vaiheen yhteydessä. Toista samat vaiheet lisätäksesi SSL:n osoitteeseen www.yourdomain.com, mutta varmenteella, jossa CN-nimi vastaa verkkotunnuksen nimeä, tai jokerimerkkivarmenteella
19 https www jokerimerkillä

Sidonnat ovat nyt valmiit

19 Kaikki sidonnat

Tadaa, voit nyt käyttää https://yourdomain.com/api/cats ja https://www.yourdomain.com/api/cats

Huom: Firefox ei käytä Windowsin sertifikaattivarastoa, joten sinun on lisättävä juurivarmentaja manuaalisesti. Mene Firefoxin Asetukset ➜ Asetukset ➜ Lisäasetukset ➜ Näytä varmenteet ➜ Varmentajat ➜ Tuo CARoot.cer-tiedostosi

IIS Client Certificate Mapping Authentication
Olemme nyt käyneet läpi juuri- ja palvelinvarmenteiden käyttötarkoitukset ja mietit varmaan, mitä tehdä myös edellisessä viestissäni luodulle asiakasvarmenteelle. Tämä on tarkoitettu tilanteisiin, joissa meidän on esimerkiksi autentikoitava asiakkaita ilman käyttäjätunnusta ja salasanaa, vaan haluamme palvelimen pyytävän asiakasta näyttämään varmenteensa ja jos se on oikea, asiakas pääsee sisään. Tämä voidaan tehdä Many-To-One- tai One-To-One-kartoituksella, ja näytän, miten molemmat tehdään manuaalisesti IIS Managerissa.

Ensin meidän on asennettava ominaisuus, joten tuodaan uudelleen esiin ”Ota Windowsin ominaisuudet käyttöön tai pois käytöstä” ja asennetaan seuraava 20 IIS client cert mapping

Käskemme palvelimemme vaatia asiakkaalta SSL-varmenteen 21 SSL-asetukset 22 apply require ssl

Sitten meidän on määritettävä palvelin tietämään, mikä asiakkaan varmenne sen on validoitava, joten mene Configuration Editoriin ja valitse iisClientCertificateMappingAuthentication-osio (voit myös syöttää polun system.webServer/security/authentication/iisClientCertificateMappingAuthentication kenttään Section) 24 iisClientCertCertMapAuth section

Many-To-One Mappings
Jos haluat mapata useita asiakasvarmenteita yhdelle käyttäjälle, tämä lähestymistapa on se, mitä tarvitset. Voit myös jakaa asiakasvarmenteita tällä tavoin asentamalla asiakasvarmenteen (ja CA-juurivarmenteen, koska kyseessä on itse allekirjoitettava varmenne) muille käyttäjille, millä koneella tahansa, kunhan asiakasvarmenne vastaa kartoituksen sääntökriteerejä. Se olisi hyödyllistä esimerkiksi tilanteessa, jossa halutaan, että kaikki organisaation käyttäjät saavat pääsyn yhden käyttäjäkartoituksen kautta.

Enable the client certificate mapping authentication 25 enable client auth

Kartoituksen lisäämiseksi napsauta … of the manyToOneMappings 26 add mapping

Tässä lisäät käyttäjät, joille haluat myöntää pääsyn.27 add new mapping

Täytä kartoituksen ominaisuudet ja toista tämä jokaiselle käyttäjälle, jolle haluat määrittää pääsyn tai epäämisen. Muista, että sinun on asennettava asiakasvarmenne ja CA:n juurivarmenne kaikkien käyttäjien mmc:hen.
28 manytoone mapping

TÄRKEÄÄ: Jotta tämä toimisi, sinun on syötettävä kelvollinen käyttäjätunnus ja salasana, ja koska minun tietokoneeni on palvelin, valtakirjatiedot ovat Windows-käyttäjätunnukseni ja -salasanani.

Nyt meidän on luotava joitain sääntöjä tämän mappingin yhteyteen, niin että palvelin voi määritellä, sallitaanko asiakkaan sisäänpääsy vai ei. Se on joten klikkaa rules-ominaisuutta ja … -painiketta

29 add rule

Lisään esimerkkinä yhden säännön, jossa palvelin tarkistaa asiakkaan varmenteen, onko se oikean CA-juuren allekirjoittama. Siirry eteenpäin ja lisää sääntöjä lisää turvallisuutta varten, katso IIS:n Monta-yksi-kartoitusviite, josta löydät lisää dokumentaatiota.
31 sääntö

Muista soveltaa muutokset IIS Managerissa, joten sulje sääntö- ja mappings-ikkunat ja napsauta Apply 32 apply changes

Avaa uusi incognito-selainikkuna varmistaaksesi, että aloitat puhtaalta pöydältä välimuistien ja evästeiden suhteen, ja syötä url-osoitteeseen /api/cats ja katso, että selain pyytää varmenteen. Valitse ClientCert ja klikkaa ok saadaksesi pääsyn kissoihin. 33 ok client cert

Jos tämä ei toimi, varmista, että asiakasvarmenne on CurrentUser/Personal-varmenteessa sekä selaimesi varmenteiden varastossa. Jos kyllä, siirry Ohjauspaneeli ➜ Internet-asetukset ➜ Sisältö ja valitse Tyhjennä SSL-tila. 34 tyhjennä ssl-tila

Avaa uusi incognito-ikkuna ja yritä uudelleen, selaimesi pitäisi nyt kysyä sinulta asiakasvarmenteen.

Huomautus: Muista, kuten aiemmin selitin, että Firefoxilla on oma varmenneavaruusvarasto, joten sinun on tuotava asiakasvarmenne ”Omat varmenteet” -osioon voidaksesi käyttää tätä.

Yksilö-kohtaiset vastaavuudet
Kävellään läpi myös yksi-yksilö-kohtaiset vastaavuudet. Tämä lähestymistapa tarkoittaa, että tarvitsemme yksittäisen asiakasvarmenteen jokaista käyttäjäkartoitusta varten. Voit joko poistaa monesta yhteen -kartoituksen käytöstä ja käyttää samaa varmentetta ja käyttäjää tai luoda uusia. Palaa takaisin Configuration Editoriin ja avaa iisClientCertificateMappingAuthentication-osio uudelleen. Napsauta … kohdasta oneToOneMappings. 35 enable one to one mappings

Voidaksemme lisätä kartoituksen varmenteeseen meidän on vietävä asiakasvarmenteen varmentetiedoston julkinen avain. Voit viedä tämän koneenhallintakonsolista (paina Windows-painiketta ja etsi mmc) Napsauta paikallisen koneen varmenteen henkilökohtaiseen varastoon ja vie haluamasi asiakkaan ssl-varmenne ilman yksityistä avainta base64-muodossa. Export client cert Withoug private key base64 export

Klikkaa hiiren kakkospainikkeella juuri viety varmenne ja avaa se notepadilla. Poista kaikki rivinvaihdot itse sertifikaatista. Poista rivinvaihdot

Kopioi tämä nyt mappingin certificate property -kenttään ja täytä loput 38 add user mapping

TÄRKEÄÄ: Jotta tämä toimisi, sinun täytyy syöttää kelvollinen käyttäjätunnus ja salasana, ja koska tietokoneeni on palvelimena, tunnistetietoina käytetään Windows-käyttäjätunnusta ja -salasanaa.

Muista jälleen kerran soveltaa muutokset. 39 apply changes

Ja niin, kokeile sitä ja kun sinua pyydetään, valitse äsken yhdistämällesi käyttäjälle yhdistämäsi varmenne.

Toivottavasti löysit tämän postauksen hyödylliseksi ja seuraavassa postauksessani käyn läpi, miten käyttää itse allekirjoitettuja varmenteita yhdessä Windows Azuren kanssa ja miten konfiguroida IIS:ää C#-koodin avulla, käy katsomassa täältä: 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/

Hyvää jatkoa =)

Vastaa

Sähköpostiosoitettasi ei julkaista.