www.hakin9.org
hakin9 Nr 10/2007
62
Obrona
R
ozpoczniemy od instalacji serwera
IIS na platformie Windows XP SP2.
W kolejnym kroku skonfigurujemy
go tak, aby działały na nim strony ASP.NET.
Na koniec dodana będzie obsługa protoko-
łu SSL.
Zasada ograniczonego zaufania leży u
podstaw użytkowania Internetu. Nie wol-
no instalować kontrolek ActiveX nieznanych
producentów. Nie należy odwiedzać podej-
rzanych stron WWW. Lepiej nie otwierać za-
łączników poczty nieznanego pochodzenia
itd. Można byłoby wymieniać i wymieniać,
czego to nie można robić surfując po Inter-
necie. Jednak pomimo wielu zagrożeń, skle-
py internetowe to dziś codzienność, a ban-
kowość elektroniczna rozwija się w najlep-
sze. To wszystko stało się możliwe dzięki
protokołom umożliwiającym jednoznaczną
identyfikację witryny WWW i pozwalającym
na bezpieczną transmisję danych pomiędzy
klientem a serwerem. Mowa tu oczywiście o
protokole SSL (ang. Secure Sockets Layer)
lub TLS (ang. Transport Layer Security) i ko-
rzystającym z niego protokole HTTPS (ang.
secure HTTP). Aby zaimplementować proto-
kół SSL, administrator serwera WWW musi
wygenerować klucz publiczny. Klucz ten po-
winien być następnie podpisany przez jed-
ną z organizacji zajmujących się potwierdza-
niem tego typu kluczy (ang. certificate autho-
rity – CA).
Konfiguracja serwera IIS
dla ASP.NET
z protokołem SSL
Sławomir Orłowski, Jacek Matulewski
stopień trudności
Każdy, nawet najprostszy, projekt powinien zostać
przetestowany. Niniejszy artykuł opisze, w jaki sposób możemy
lokalnie sprawdzić działanie witryny ASP.NET, która wymaga
uwierzytelnienia typu SSL. Jest on skierowany przede wszystkim
do programistów .NET.
Z artykułu dowiesz się
• jak do celów testowych zainstalować i skon-
figurować serwer IIS na komputerze wyposa-
żonym w system Windows XP SP2,
• o konfiguracji serwera IIS do obsługi stron
ASP.NET z uwierzytelnianiem SSL,
• artykuł ten należy traktować jako poradnik
dla programistów .NET, którzy chcą lokalnie
przetestować swoje witryny WWW wymaga-
jące użycia protokołu SSL. Dzięki temu moż-
na uniknąć wielu błędów, co zdecydowanie
podniesie bezpieczeństwo tworzonych pro-
jektów.
Co powinieneś wiedzieć
• ogólna znajomość systemu Windows XP,
• podstawowa znajomość platformy .NET,
• podstawowa znajomość zasad działania pro-
tokołów SSL, TLS i HTTPS.
Konfiguracja serwera IIS dla ASP.NET z protokołem SSL
hakin9 Nr 10/2007
www.hakin9.org
63
Działamy tutaj w myśl zasady,
że w końcu komuś musimy zaufać.
Można na to spojrzeć również jako
na pewnego rodzaju protekcję. Po-
wiedzmy, że chcemy zdobyć nową
pracę. Musimy więc przekonać na-
szego przyszłego szefa, że moż-
na nam zaufać. Największe szan-
se mamy, jeżeli ktoś godny zaufa-
nia nas poleci. I tak mniej więcej
działa podpisywanie certyfikatów.
Współczesne przeglądarki interne-
towe potrafią rozpoznać firmę, któ-
ra podpisuje dany certyfikat. Jeże-
li certyfikat jest nieznanego pocho-
dzenia, wówczas przed wejściem
na taką stronę zostaniemy poin-
formowani o możliwości zaistnie-
nia zagrożenia. Spora część użyt-
kowników ignoruje tego typu infor-
macje. Co to za zagrożenie, skoro
cała transakcja jest szyfrowana?
To prawda, nikt jej nie podsłucha,
ale nie możemy mieć pewności,
co serwer zrobi z poufnymi danymi
po ich otrzymaniu. W końcu to je-
mu ufamy na zasadzie wszystko al-
bo nic. Dla modelu sieciowego OSI
protokół HTTPS działa w warstwie
aplikacji, natomiast protokół SSL
działa w warstwie transportowej.
Takie rozwiązanie wymusza istnie-
nie jednego certyfikatu dla każde-
go adresu IP. Warto również wspo-
mnieć, że protokół SSL zawdzię-
czamy firmie Netscape. Podsumo-
wując, SSL gwarantuje:
• identyfikację stron, czyli pew-
ność, że nikt się nie podszywa
pod klienta bądź serwer,
• szyfrowanie danych, co prak-
tycznie uniemożliwia podsłuch,
• integralność danych, co ozna-
cza pewność, że przesyłane da-
ne nie zostały po drodze pod-
mienione, np. poprzez atak typu
man-in-the-middle.
Trzy główne czynniki (nie licząc
tzw. czynnika ludzkiego) wpływa-
ją na bezpieczeństwo transakcji
HTTPS. Po pierwsze, jakość im-
plementacji obsługi tego typu po-
łączeń w przeglądarce interneto-
wej. Po drugie, konfiguracja serwe-
ra WWW i po trzecie, użyty algo-
rytm kryptograficzny.
Instalacja serwera IIS
Firma Microsoft udostępniła dar-
mową wersję środowiska programi-
stycznego umożliwiającego tworze-
nie projektów ASP.NET. Visual Web
Developer, bo o nim mowa, posia-
da wbudowany serwer WWW, który
uruchamiany jest wyłącznie do ce-
lów testowych. Jest to szalenie wy-
godne rozwiązanie, ponieważ nie
musimy sami instalować i urucha-
miać serwera IIS w naszym syste-
mie. Jest on uruchamiany na czas
pracy środowiska, a następnie wy-
łączany.
Osobiście zachęcam do po-
brania pakietu Visual Web Deve-
loper i sprawdzenia jego napraw-
dę sporych możliwości. Jeśli jed-
nak chcielibyśmy sprawdzić lo-
kalnie zachowanie witryny WWW
wraz z protokołem HTTPS, musi-
my sami zainstalować i skonfigu-
rować serwer IIS. Jak się za chwi-
lę okaże, nie jest to wcale trudne.
Wystarczy dodać nowy składnik
systemu Windows ze standardowej
funkcji Dodaj/Usuń składniki sys-
temu Windows. Uruchamiamy Pa-
nel sterowania (np. przez okno Mój
komputer) i otwieramy aplet Dodaj/
Usuń programy. W jego oknie kli-
kamy przycisk Dodaj/Usuń składni-
ki systemu Windows. Sprawdzamy,
czy zaznaczona jest pozycja Inter-
netowe usługi informacyjne (IIS),
a w jej szczegółach, czy są za-
znaczone pozycje Common Files,
Przystawka internetowych usług
informacyjnych, Usługa SMTP i
Usługa World Wide Web. Jeżeli
nie, zaznaczamy je i klikamy Dalej.
Rysunek 1.
Aplikacja Zarządzanie komputerem z rozwiniętą listą usług
dostępnych w systemie Windows XP SP2
Rysunek 2.
Okno menedżera serwera IIS
hakin9 Nr 10/2007
www.hakin9.org
Obrona
64
Wówczas nastąpi instalacja zazna-
czonych składników. Po zakończe-
niu instalacji musimy jeszcze uru-
chomić odpowiednią usługę w sys-
temie Windows. Poprzez aplikację
Zarządzanie komputerem (Panel
sterowania / Narzędzia administra-
cyjne / Zarządzanie komputerem)
wchodzimy w listę aktualnie do-
stępnych usług systemowych (le-
wa część okna, gałąź Usługi i apli-
kacje / Usługi). W liście usług (Ry-
sunek 1) należy uruchomić: Admi-
nistrator programu IIS, Publikowa-
nie w sieci World Wide Web i ewen-
tualnie Simple Mail Transfer Proto-
col (SMTP).
Uruchomienie usług IIS może
nie wystarczyć, aby serwer WWW
był w pełni aktywny. Musimy wyko-
nać jeszcze jeden drobny zabieg. W
oknie Narzędzia administracyjne kli-
kamy dwukrotnie ikonę Internetowe
usługi informacyjne (menedżer ten
dostępny jest także w drzewie okna
Zarządzanie komputerem). Urucho-
miona zostanie aplikacja systemo-
wa Internetowe usługi informacyjne
(Rysunek 2).
W jej oknie rozwijamy elemen-
ty dostępne w lokalnym kompute-
rze i zaznaczamy pozycję Domyśl-
na witryna sieci Web. Z menu kon-
tekstowego tej pozycji wybieramy
Uruchom lub klikamy trójkąt na pa-
sku narzędzi. W tej wersji serwera
IIS ograniczeniem jest możliwość
przechowywania tylko jednej stro-
ny WWW. Standardowo skonfigu-
rowany serwer IIS w katalogu C:
\Inetpub\wwwroot powinien mieć
umieszczoną witrynę internetową.
Aby przetestować jego działanie,
umieszczamy tam plik Default.html,
w którym umieszczamy kod HTML
zaprezentowany na Listingu 1.
Myślę, że nie ma potrzeby tłu-
maczenia, co zostanie wyświetlo-
ne w oknie przeglądarki interneto-
wej podczas uruchomienia tego pli-
ku. My jednak dostęp do tej stro-
ny chcemy uzyskać z poziomu ser-
wera IIS. W tym celu uruchamiamy
przeglądarkę internetową i wpisuje-
my w niej adres http://localhost/ lub
http://127.0.0.1. Powinniśmy zoba-
czyć utworzoną przed chwilą stro-
nę (Rysunek 3).
Rejestrowanie
ASP.NET 2.0 w IIS
Należy zwrócić uwagę, że jeże-
li IIS było zainstalowane lub rein-
stalowane po zainstalowaniu plat-
formy .NET, to konieczne jest zare-
jestrowanie usług ASP.NET w ser-
werze IIS. Zrobimy to na przykła-
dzie .NET w wersji 2.0. Pliki platfor-
my .NET umieszczone są w podka-
talogu Microsoft.NET\Framework\
katalogu systemowego Windows.
Znajdujemy tam katalog, który w
nazwie po v2.0 ma najwyższy nu-
mer. W moim przypadku będzie to
katalog Microsoft.NET\Framework\
v2.0.50727. Jest tam program asp-
net_regiis.exe służący do rejestro-
wania usługi ASP.NET dla serwe-
ra IIS.
Dla pewności uruchamiamy
program aspnet_regiis.exe z para-
metrem
–ua
, aby odinstalować inne
wersje platformy .NET, które mo-
gą być zarejestrowane w serwe-
rze IIS. Następnie uruchamiamy
program aspnet_regiis.exe z pa-
rametrem
–i
. Po chwili powinniśmy
uzyskać komunikat Finished instal-
ling ASP.NET (2.0.50727). Można
teraz przetestować, czy uda nam
się uruchomić prostą aplikację
ASP.NET. Powiedzmy, że mamy
już stworzoną witrynę ASP.NET
i chcielibyśmy ją móc uruchomić
za pomocą serwera IIS. Pierwszą
czynnością, jaką musimy wyko-
nać, jest uruchomienie menedże-
ra IIS (Rysunek 2). Zaznaczamy w
nim element Domyślna witryna sie-
ci Web i wybieramy pozycję Nowy /
Katalog wirtualny... z jej menu kon-
tekstowego (menu dostępnego po
skinięciu prawym klawiszem my-
szy). Uruchomiony zostanie Kre-
ator tworzenia katalogów wirtual-
nych. Tworzymy w nim alias pod-
strony i klikamy przycisk Dalej.
Teraz korzystając z przycisku
Przeglądaj... wskazujemy katalog
projektu, który chcemy zarejestro-
wać w serwerze IIS. Ponownie kli-
kamy Dalej. Kolejna strona pozwa-
la na wybór uprawnień IIS wzglę-
dem tworzonego katalogu. W za-
leżności od typu naszego projektu
nadajemy odpowiednie prawa (od-
czyt, uruchamianie skryptów, za-
pis). Aby zakończyć pracę z kreato-
rem, klikamy jeszcze raz przycisk
Dalej, a następnie Zakończ. Jeżeli
alias został prawidłowo skonfiguro-
wany, to do gałęzi Domyślna witry-
na sieci Web dodana zostanie no-
wa pozycja o tej samej nazwie, ja-
kiej użyliśmy przy tworzeniu aliasu.
Po uruchomieniu przeglądarki bę-
dziemy mogli wpisać adres witryny
korzystając z wirtualnego katalogu,
tj. http://localhost/nazwa_aliasu/.
Naszą witrynę WWW możemy
oczywiście po prostu skopiować
do katalogu C:\Inetpub\wwwroot.
W Sieci
• http://www.iis.net/ – podstawowe źródło informacji na temat serwera IIS,
• http://en.wikipedia.org/wiki/Transport_Layer_Security – artykuł opisujący zasadę
działania protokołów SSL i TLS,
• http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-
4c73-b628-ade629c89499&displaylang=en – link do pobrania pakietu IIS 6.0 Re-
source Kit Tool, w którego skład wchodzi program SelfSSL użyty w artykule do ge-
nerowania publicznego klucza dla serwera IIS,
• http://msdn.microsoft.com/vstudio/express/downloads/ – miejsce, skąd można
pobrać środowisko programistyczne Visual Web Developer Express Edition, które
umożliwia tworzenie stron ASP.NET.
Listing 1.
Testowa strona HTML
<
HTML
>
<
HEAD
>
<
TITLE
>
Test serwera WWW
<
/TITLE
>
<
/HEAD
>
<
BODY
>
Test serwera WWW
<
/BODY
>
<
/HTML
>
Konfiguracja serwera IIS dla ASP.NET z protokołem SSL
hakin9 Nr 10/2007
www.hakin9.org
65
Będzie wówczas dostępna bezpo-
średnio po wpisaniu adresu http:
//localhost/. Jeśli coś nie działa, po-
zostaje wyświetlenie pliku iis6.log
w katalogu systemowym Windows,
który zawiera informacje o działa-
niu serwera IIS. Proste strony bę-
dą na pewno działały bez zarzu-
tu. Ze skomplikowanym serwisa-
mi, które jednocześnie korzystają z
kilku technologii, sprawa może być
nieco bardziej skomplikowana i wy-
magać może instalowania dodatko-
wych komponentów.
Instalacja
certyfikatu SSL
Przechodzimy teraz do skonfigu-
rowania serwera IIS w ten sposób,
aby obsługiwał połączenia HTTPS.
Dzięki wielu kreatorom obecnym
w systemie Windows oraz odpo-
wiedniemu oprogramowaniu, czyn-
ność ta będzie również niezwy-
kle prosta. Pierwszym krokiem bę-
dzie zainstalowanie programu Sel-
fSSL, który wchodzi w skład pakie-
tu IIS 6.0 Resource Kit Tool. Ge-
neruje on publiczny klucz dla ser-
wera IIS i automatycznie konfi-
guruje go do obsługi stron typu
https://. Plik ten znajduje się w za-
sobach http://www.microsoft.com/
downloads, a pełny link do jego
pobrania jest dosyć nieciekawy:
h t t p : / / w w w . m i c r o s o f t . c o m /
downloads/details.aspx?FamilyID
=56fc92ee-a71a-4c73-b628-ade-
629c89499&displaylang=en. Na-
zwa pliku to iis60rkt.exe. Po po-
braniu uruchamiamy go. Na ekra-
nie naszego komputera powinno
pojawić się okno instalatora pakie-
tu IIS 6.0 Resource Kit Tool. Jak
zwykle w przypadku instalatorów
w systemie Windows, klikamy przy-
cisk Next. Po drodze zgadzamy się
na warunki licencji (nie mamy in-
nego wyboru, jeżeli chcemy zain-
stalować ten pakiet). Ponieważ w
skład pakietu IIS 6.0 Resource Kit
Tool wchodzi sporo programów na-
rzędziowych, a my chcemy jedynie
skonfigurować połączenie HTTPS,
to w oknie wyboru rodzaju instalacji
wybieramy opcję Custom. Umożli-
wia nam to samodzielny wybór ele-
mentów z pakietu.
Kolejnym krokiem jest wybra-
nie ścieżki dostępu, w której chce-
my zainstalować pakiet IIS 6.0 Re-
source Kit Tool. Po wyborze miej-
sca instalacji wybieramy elementy,
które chcemy zainstalować. Ponie-
waż mamy zamiar uruchomić połą-
czenie HTTPS z protokołem SSL,
wybieramy jedynie program Sel-
fSSL 1.0 (Rysunek 4). Oczywiście
nic nie stoi na przeszkodzie, aby
zainstalować wszystkie programy
wchodzące w skład IIS 6.0 Reso-
urce Kit Tool.
Przed właściwą instalacją wy-
świetlone zostanie jeszcze okno
potwierdzające wybrane przez
nas programy. Klikamy przycisk
Next i czekamy, aż instalator za-
Lista niektórych CA
• VeriSign – http://www.verisign.com/index2.html,
• Thawte – http://www.thawte.com/,
• QualitySSL – http://www.qualityssl.com/,
• ComodoSSL – http://www.instantssl.com/,
• IpsCA – http://certs.ipsca.com/,
• RapidSSL – http://www.rapidssl.com/index_ssl.htm,
• Go Daddy – https://www.godaddy.com/gdshop/ssl/ssl.asp?isc=sslsomt04,
• CAcert – http://www.cacert.org/,
• Home.pl – http://home.pl/serwery/ssl,
• Signet – http://www.signet.pl/index.html.
Rysunek 3.
Najprostszy test serwera WWW
Rysunek 4.
Wybór składników pakietu IIS 6.0 Resource Kit Tool
hakin9 Nr 10/2007
www.hakin9.org
Obrona
66
kończy kopiować pliki. Tradycyj-
nie na końcu klikamy przycisk Fi-
nish, który kończy instalację. W
ten sposób zainstalowaliśmy pro-
gram SelfSSL, generujący auto-
matycznie certyfikaty SSL i insta-
lujący je w serwerze IIS. Należy
mieć na uwadze fakt, że certyfi-
katy te nie są potwierdzane przez
żadną z wymienionych wcześniej
firm, więc przy uruchamianiu witry-
ny WWW przeglądarka interneto-
wa będzie wyświetlała odpowied-
nie ostrzeżenia.
Pozostało nam jeszcze wygene-
rowanie klucza publicznego dla ser-
wera IIS. Pakiet IIS 6.0 Resource
Kit Tool w menu Start systemu Win-
dows w katalogu Programy/IIS Re-
sources/ umieszcza wszystkie swo-
je składowe (zależnie od typu insta-
lacji). Z menu Start wybieramy ka-
talog Programy/IIS Resources/Sel-
fSSL i klikamy ikonę SelfSSL. Otwo-
rzy się widoczne na Rysunku 5 okno
komend.
W celu wygenerowania klucza
publicznego wydajemy komendę:
selfssl.exe /t
. Zostaniemy popro-
szeni o potwierdzenie instalacji cer-
tyfikatu SSL dla serwera IIS. Wpi-
sujemy z klawiatury y i przyciska-
my klawisz Enter. W ten sposób zo-
staje zainstalowany klucz publicz-
ny. Pozostałe opcje programu sel-
fssl.exe to:
•
/T
– Opcja użyta przez nas do
automatycznego wygenerowa-
nia certyfikatu. Wybiera wszyst-
kie inne parametry jako domyśl-
ne,
•
/N
– Ustala nazwę certyfikatu.
Domyślnie jest to nazwa kompu-
tera,
•
/K
– Wielkość klucza SSL. Do-
myślnie wartość ta jest równa
1024,
•
/V
– Ilość dni, jakie wygenerowa-
ny certyfikat ma obowiązywać.
Domyślnie jest to 7 dni,
•
/S
– Numer identyfikacyjny wi-
tryny na serwerze IIS. Domyślna
wartość to 1. Tu zresztą nie ma-
my zbyt wielkiego wyboru, jeżeli
serwer IIS został skonfigurowa-
ny tak jak w opisie,
•
/P
– Numer portu dla połączenia
SSL. Standardowo jest to port
443,
•
/Q
– Nadpisywanie klucza bez
potwierdzenia,
Jedyne, co nam teraz pozostaje, to
sprawdzenie, czy całość działa. Za-
kładam, że mamy zdefiniowaną pro-
stą stronę ASP.NET 2.0 w serwerze
IIS i jest ona w jego katalogu www-
root. Uruchamiamy przeglądar-
kę internetową i wpisujemy tym ra-
zem adres https://localhost. Ponie-
waż nasz certyfikat nie jest podpi-
sany przez żadną z organizacji CA,
powinniśmy zostać zapytani przez
przeglądarkę, czy akceptujemy cer-
tyfikat tej strony oraz poinformowani
o ewentualnych zagrożeniach. Jeśli
opisane kroki wykonaliśmy popraw-
nie, wówczas w przeglądarce inter-
netowej powinna się pojawić ikona
kłódki i informacja, że połączenie
jest szyfrowane.
Podsumowanie
Testowy serwer IIS wraz z obsłu-
gą połączeń HTTPS jest już skon-
figurowany. Dzięki niemu będziemy
mogli sprawdzać witryny ASP.NET
wymagające uwierzytelnienia SSL.
Ponieważ artykuł ten skierowany
jest do programistów, a jego zało-
żeniem było przedstawienie platfor-
my testowej dla witryn ASP.NET z
połączeniem HTTPS, to tak skonfi-
gurowanego serwera IIS nie nale-
ży udostępniać w Internecie – chy-
ba, że lubi się ryzyko. Udanych te-
stów! l
Rysunek 5.
Generowanie publicznego klucza dla serwera IIS
O autorach
Sławomir Orłowski – z wykształcenia fizyk. Obecnie jest doktorantem na Wydzia-
le Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w
Toruniu. Zajmuje się symulacjami komputerowymi układów biologicznych (dyna-
mika molekularna) oraz bioinformatyką. Programowanie jest nieodzowną częścią
jego pracy naukowej i dydaktycznej. Ma doświadczenie w programowaniu w języ-
kach C, C++, Delphi, Fortran, Java i Tcl. Z językiem C# i platformą .NET pracuje
od 2002 roku. Strona domowa: http://www.fizyka.umk.pl/~bigman/.
Kontakt z autorem: bigman@fizyka.umk.pl
Jacek Matulewski – fizyk zajmujący się na co dzień optyką kwantową i układa-
mi nieuporządkowanymi na Wydziale Fizyki, Astronomii i Informatyki Stosowa-
nej Uniwersytetu Mikołaja Kopernika w Toruniu. Jego specjalnością są symula-
cje ewolucji układów kwantowych oddziałujących z silnym światłem lasera. Od
1998 roku interesuje się programowaniem dla systemu Windows, w szczególno-
ści w środowisku Borland C++Builder. Ostatnio zainteresowany platformą .NET i
językiem C#. Poza opublikowanymi u nas książkami dotyczącymi programowa-
nia przygotował również cykl artykułów dla czasopisma „PC World Komputer” (od
sierpnia 2005 roku). Wierny użytkownik kupionego w połowie lat osiemdziesiątych
komputera osobistego ZX Spectrum 48k.
Kontakt z autorem: jacek@fizyka.umk.pl