Kirjutamise põhjuseks on www.id.ee peal olev eksitav juhend: http://www.id.ee/10456?id=10737 . Selle juhendi üle on kaevanud ka teised: http://dukelupus.wordpress.com/2006/12/24/tants-id-kaardi-umber-ehk-iisi-ja-id-kaardi-suhtlema-panemine/
Kuna samuti kulutasin selle “üllitise” järgi IIS 6.0 konfigureerides mitu tundi oma aega, siis kirjutan teise versiooni sellest.
Siiski, ma ei ole testinud seda lahendust kõikidel Windows serveri platvormidel, tegin selle läbi Windows Server 2003 R2, Standard Edition, Service Pack 2 peal.
1. Installeeri IISi SSL tugi. SSL on vajalik, IIS ei aktiveeri kliendilt sertifikaatide küsimist üle HTTP.
Selleks:
a) osta, generereeri või hangi testsertifikaat. SSL sertifikaatide pakkujaid on väga palju ja hinnad on väga erinevad. Erinevused tulevad peamiselt sellest, kas SSL sertifikaadi pakkuja on kõigis enamlevinud brauserites registreeritud või mitte. Lisaks muud “äriteenused” ja “võimalused”, nagu näiteks “wildcard SSL” jms. Ise ostsin SSL sertifikaadi Thawtelt, sealtsamast saab ka 21 päeva kehtiva ajutise sertifikaadi. Thawte ostu protsess on samuti kõige arusaadavam.
b) kuidas täpselt SSL sertifikaati IISi paigaldada, võib lugeda kahte allikat kombineerides: Thawte lehelt dokumendist https://www.thawte.com/ucgi/gothawte.cgi?a=w44600158747054000 (Securing your Microsoft Internet Information Services (MS IIS) Web Server with a thawte Digital Certificate ja raamatust Microsoft IIS 6.0: Administrator’s Pocket Consultant, William R. Stanek, ISBN: 0735615608. Viimati nimetatud raamatus peatükk 8 on väga lakooniline ja samas täpne.
2. Kontrolli, et IIS suudab üle HTTPSi serveerida.
3. Lae Sertifitseerimiskeskuse lehelt alla sertifikaadid: http://www.sk.ee/pages.php/0202040501
Sul on vaja PEM formaadis sertifikaate: Juur-SK, ESTEID-SK ja ESTEID-SK 2007. Ava Notepadis uus tekstifail, ja copy-paste sinna üksteise järel samas järjekorras sertifikaatide sisu. Faili nimi ei ole oluline, võib olla näiteks ESTIDCompl.PEM.cer.
Ka faili laiend ei ole oluline, kuid kui annad laiendiks .cer, siis on võimalik sertifikaat kohe ka topeltklikiga installeerida. Sertifikaatide installeerimiseks pead olema sisse loginud administraatorina.
Kindlam viis on sertifikaadid installeerida Windows Serveri halduskonsoolis, selleks:
a) Start->Run, kirjuta mmc, OK. Avaneb tühi konsool.
b) konsoolis vali File->Add/Remove Snap In, avanenud aknas vajuta nuppu Add…
c) avanenud uues aknas vali nimekirjast Certificates, vajuta Add. Avaneb uus aken, kus vali Compute account. Finish, Close.
d) vajuta järelejäänud aknas OK.
e) Halduskonsooli tekitati Certificates puu, kus ava Trusted Root Certification Authorities ja parema hiire klikiga vali selle peal All Tasks -> Import. Vali see kokku pandud fail (meie näites ESTIDCompl.PEM.cer).
Juhul, kui oled eelnevalt id.ee eksliku juhendi järgi katseid tehes oma sertifikaatide lao segi keeranud (installeerinud neid kõikidesse kohtadesse vms.), siis otsi üles just paigaldatud ESTIDCompl.PEM.cer-st tekkinud sertifikaat ja selle peal nimekirjas Properties aknas võid anda talle mingi sobiva Friendly Name.
4. Ava IIS halduskonsool, vali veebisaidi, millele soovid ID autentimist rakendada omadused (Properties). Kaardilt Directory Security (mis peaks juba tuttav olema, kuna sealt paigaldasid ka eelnevalt SSL sertifikaadi) vajuta osas Secure Communications nuppu Edit …
a) võid märkida valikukasti Require secure channel – kuid ID kaardiga autentimiseks ei ole see kogu saidile vajalik.
b) vali Client certificates alt vähemalt Accept client certificates (arusaadavatel põhjustel ei ole mõtet valida Ignore …)
c) Tee linnuke valikukasti Enable certificate trust list. Kui sul veel ei ole ühtki, siis vali New. Avanenud viisardis vajuta nuppu Add From Store, kus avanenud aknas lisa hiljuti lisatud ESTID failist tehtud sertifikaat (tunned selle ära näiteks eelnevalt antud Friendly Name järgi – kui oled eelnevalt juba importinud id.ee juhendi järgi, siis vale valiku tegemisel ei hakka autentimine tööle).
Juhul, kui kasutad test-SSL sertifikaati, siis pead valima lisaks ka juursertifikaadi SSL jaoks (mina näiteks Thawte Test CA Root).
Certificates in the CTL ehk Certificate Trust List loetleb JUURsertifikaadid, mille sertifikaate aktsepteeritakse.
5. Edasi võid ID kaardiga autentimiseks valida mitmeid tehnikaid – kuid, sa ei pea sugugi kõiki faile tingimata kaitsma ID kaardi autentimisega. Piisab, kui su lehel leidub üks fail, nt. login.aspx, mille puhul nõutakse autentimist ja login.aspx seab püsti juba sessiooni, näiteks cookie põhise. Edasi teised failid kasutaks siis juba enda loodud sessiooni. See on otstarbekas näiteks siis, kui lehel saab mitmel moel autentida.
6. Login.aspx ID autentimist küsima panemiseks vali IIS halduskonsoolis veebisaidi failide nimekirjast Login.aspx ja parema nupuga kuva omadused ehk Properties.
a) vali File Security kaart, sealt Secure Communications osast vajuta Edit …
b) Tee linnuke valikukasti Require secure channel (SSL)
c) Client Certificates osast vali vähemalt Accept client certificates. Sa ei pea valima Require client certificates, sest juhul, kui kasutaja keeldub ID kaardiga autentimast, peaksid saama endiselt pakkuda kasutajale alternatiive, mitte keelduma näitamast login lehekülge.
7. Nüüd jääb teha veel saidipõhine autentimis- ja sessioonilahendus. Väga lihtne näide, kuidas ilma sertifikaadi aegumist kontrollimata lugeda aspx failis isikukood ja nimi:
if (Request.ClientCertificate["Subject"].Length == 0)
{
Response.Write(“Ei antud sertifikaate”);
}
else
{
String unparsed=Request.ClientCertificate["Subject"];
System.Text.RegularExpressions.Regex re = new Regex(“SERIALNUMBER=(\\d{11})”);
Response.Write(“<br/>unparsed:” + unparsed + “<br/>”);
if (re.IsMatch(unparsed))
{
String idcode = re.Match(unparsed).Groups[1].Value;
Response.Write(“Su isikukood on:” + idcode + “<br/>”);
}
System.Text.RegularExpressions.Regex rename = new Regex(“SN=(.*?),\\s+G=(.*?),”);
if (rename.IsMatch(unparsed))
{
String eesnimi = rename.Match(unparsed).Groups[1].Value;
String perenimi = rename.Match(unparsed).Groups[2].Value;
Response.Write(“Su nimi on: “+eesnimi+” ” +perenimi+”<br/>”);
}
}
aprill 15, 2008 kell 6:46 p.l. |
[...] @ 21:46:17 Märkasin sissetuleva lingina Neeme Voolu blogi, kus ta kirjutab esimese postitusena ID kaardi põhise autentimise seadistamine IIS 6.0-s. Olen ise samuti sel teemal kaevelnud – kuid Neeme läks sammu edasi ja kirjutas ilusa, [...]