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.
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 JUUR-SK.PEM.cer ja impordi.
f) Impordi sertifikaatide harusse Intermediate Certification Authorities/Certificates alla ESTEID-SK.PEM.cer ja ESTEID-SK 2007.PEM.cer
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 JUUR-SK sertifikaat.
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/>”);
}
}
detsember 17, 2009, 12:58 p.l. |
Kas on teada ka, mismoodi seda sama asja IIS7 peal läbi teha. Mõned asjad käivad seal teistmoodi ja mõned võimalused võrreldes v6ga hoopis ära jäetud.
detsember 17, 2009, 1:03 p.l. |
Ei ole proovinud. Kui keegi proovib, võiks teada anda. Kuid väga suuri erinevusi ei tohiks olla, MS seda osa IISist minu teada väga ringi ei teinud.