{"id":114,"date":"2009-03-30T23:00:30","date_gmt":"2009-03-30T22:00:30","guid":{"rendered":"http:\/\/eriz.pcinside.pl\/weblog\/apache-22-pod-windows-z-ssl-114.html"},"modified":"2009-03-30T23:00:30","modified_gmt":"2009-03-30T22:00:30","slug":"apache-22-pod-windows-z-ssl","status":"publish","type":"post","link":"https:\/\/eriz.pcinside.pl\/weblog\/apache-22-pod-windows-z-ssl-114.html","title":{"rendered":"Apache 2.2 pod Windows z SSL"},"content":{"rendered":"<p>Wcze\u015bniej pisa\u0142em o <a href=\"\/weblog\/instalacja-i-konfiguracja-apache-22-z-php-5x-pod-windows-xp-87.html\">instalowaniu Apache<\/a>. Ok, (chyba) dzia\u0142a, ale nie ma opcji zestawiania po\u0142\u0105cze\u0144 poprzez SSL. Dzisiaj zajmiemy si\u0119 instalacj\u0105 wersji obs\u0142uguj\u0105cej po\u0142\u0105czenia szyfrowane.<\/p>\n<p>Tak naprawd\u0119, ca\u0142a czynno\u015b\u0107 nie jest szczeg\u00f3lnie trudniejsza od tej, do kt\u00f3rej zalinkowa\u0142em. Je\u015bli wszystko ruszy\u0142o z kopyta w wersji bez SSL, mo\u017cna powiedzie\u0107, \u017ce instalacja wersji obs\u0142uguj\u0105cej szyfrowanie oka\u017ce si\u0119 banalna. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p><!--more--><\/p>\n<p>Zaznaczam, \u017ce metoda ta raczej nie przyda si\u0119 do cel\u00f3w produkcyjnych &#8211; ot, podstawowa dzia\u0142aj\u0105ca wersja, obs\u0142uguj\u0105ca globalne certyfikaty. Co to oznacza? Ano, \u017ce wszystkie hosty obs\u0142ugiwane przez jeden demon b\u0119d\u0105 korzysta\u0142y z jednego certyfikatu. Z czym si\u0119 &#8222;jedz\u0105&#8221; certyfikaty? Zapraszam do lektury <a href=\"http:\/\/pl.wikipedia.org\/wiki\/SSL\">odpowiedniej strony<\/a> w Wikipedii.<\/p>\n<p>W olbrzymim skr\u00f3cie &#8211; do ka\u017cdej domeny przypisywany jest certyfikat, a je\u015bli dane si\u0119 nie zgadzaj\u0105 &#8211; przegl\u0105darka wy\u015bwietli stosowne ostrze\u017cenie.<\/p>\n<p class=\"images\"><a href=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-1.png\" title=\"Ostrze\u017cenie o niezaufanym certyfikacie\" rel=\"imagebox-fd\"><img decoding=\"async\" src=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-1-thumb.jpg\" alt=\"ostrze\u017cenie przegl\u0105darki\" style=\"width: 127px; height: 120px\" \/><\/a><\/p>\n<p>W tym artykule opisz\u0119, jak skonfigurowa\u0107 Apache do obs\u0142ugi protoko\u0142u szyfrowanego z u\u017cyciem w\u0142asnor\u0119cznie wygenerowanego certyfikatu. W celach produkcyjnych nale\u017cy zaopatrzy\u0107 si\u0119 w tzw. certyfikat kwalifikowany, to znaczy &#8211; wystawiony przez jak\u0105\u015b firm\u0119 tym procederem (:P) si\u0119 trudni\u0105c\u0105. W\u00f3wczas przegl\u0105darka nie b\u0119dzie wy\u015bwietla\u0142a ostrze\u017cenia przed niezaufanym certyfikatem. Oczywi\u015bcie, taka impreza kosztuje, jest to swego rodzaju biznes, w kt\u00f3ry jest bardzo ci\u0119\u017cko (o ile w og\u00f3le si\u0119 da) wkr\u0119ci\u0107, gdy\u017c przegl\u0105darki zawieraj\u0105 wpisy tych najwi\u0119kszych wystawc\u00f3w, a dodanie nowego wymaga\u0142oby, w zasadzie, u\u017cycia wehiku\u0142u czasu. Kiedy\u015b wydanie certyfikatu kosztowa\u0142o krocie (nawet kilkaset z\u0142otych rocznie), teraz nie jest to ju\u017c taki problem. Po frazie <em>tanie certyfikaty SSL<\/em> w Google mo\u017cna znale\u017a\u0107 wiele ofert, do\u015b\u0107 popularne s\u0105 <a href=\"https:\/\/www.godaddy.com\/gdshop\/ssl\/ssl.asp\">GoDaddy<\/a>, czy <a href=\"http:\/\/www.rapidssl.com\/index_ssl.htm\">RapidSSL<\/a>.<\/p>\n<p>Cz\u0119sto bywa tak, \u017ce firmy hostingowe po\u015brednicz\u0105 w sprzeda\u017cy certyfikat\u00f3w i nieraz oferty polskich reseller\u00f3w s\u0105 ta\u0144sze ni\u017c bezpo\u015brednie kupno u wydawcy. Warto poszpera\u0107, popyta\u0107. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p>Ok, ok, rozgada\u0142em si\u0119, nie o tym mia\u0142o by\u0107.<\/p>\n<h3>wyb\u00f3r drogi<\/h3>\n<p>Dlaczego od razu rozjazd? Przecie\u017c mo\u017cna wygenerowa\u0107 certyfikat na samym pocz\u0105tku. Ok, mo\u017cna, ale potrzebujemy przecie\u017c narz\u0119dzia. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Nie ka\u017cdy posiada OpenSSL zainstalowane fabrycznie, troch\u0119 trzeba si\u0119 nieraz pom\u0119czy\u0107. Apache dla Windows jest publikowane w dw\u00f3ch wersjach &#8211; <em>no_ssl<\/em> i <em>openssl<\/em>. Ten pierwszy nie posiada praktycznie niczego, co jest nam niezb\u0119dne do uaktywnienia szyfrowania. Je\u015bli mamy certyfikat, wi\u0119ksza cz\u0119\u015b\u0107 drogi za nami, ale pojawia si\u0119 powa\u017cny problem &#8211; potrzebujemy <em>mod_ssl<\/em>, kt\u00f3rego raczej nikt nie udost\u0119pnia w binarkach, a \u017ar\u00f3d\u0142a ma\u0142o kto zechce sobie kompilowa\u0107. Za to wersja <em>openssl<\/em> udost\u0119pnia pe\u0142en warsztat i wystarczy odkomentowa\u0107 dos\u0142ownie kilka linijek w plikach konfiguracyjnych, aby wszystko zacz\u0119\u0142o dzia\u0142a\u0107. Komfortowy przypadek opisz\u0119 od razu. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<h3>Apache z OpenSSL<\/h3>\n<p><a href=\"\/weblog\/instalacja-i-konfiguracja-apache-22-z-php-5x-pod-windows-xp-87.html\">Jak zainstalowa\u0107 Apache z PHP pod Windows<\/a> ju\u017c pisa\u0142em, posadzenie paczki z obs\u0142ug\u0105 SSL wcale nie b\u0119dzie inne. Pakiet zawiera po prostu narz\u0119dzie do wygenerowania certyfikatu oraz modu\u0142 zajmuj\u0105cy si\u0119 po\u0142\u0105czeniami szyfrowanymi. Paczk\u0119 mo\u017cna pobra\u0107 <a href=\"http:\/\/www.apache.org\/dist\/httpd\/binaries\/win32\/\">ze strony pobiera\u0144<\/a> projektu, \u015bci\u0105gamy plik z <em>openssl<\/em> przy ko\u0144cu nazwy. Instalacja przebiega identycznie, jak w moim poprzednim artykule.<\/p>\n<p>Gdy ju\u017c wszystko dzia\u0142a, <q>It works!<\/q> dumnie ukazuje si\u0119 w przegl\u0105darce w\u0142a\u015bciwie pozostaje ju\u017c tylko generowanie\/instalacja certyfikatu i pogrzebanie w konfiguracji. O tym dalej, gdy\u017c etap ten &#8211; pomijaj\u0105c instalacj\u0119 dodatkowych narz\u0119dzi &#8211; jest niemal\u017ce identyczny, co w wersji bez OpenSSL.<\/p>\n<h3>Apache bez bibliotek SSL<\/h3>\n<p>Zdobycie narz\u0119dzia generuj\u0105cego certyfikaty i odpowiednich bibliotek nie b\u0119dzie stanowi\u0142o problemu &#8211; wszystko mo\u017cna pobra\u0107 <a href=\"http:\/\/www.slproweb.com\/products\/Win32OpenSSL.html\">ze strony organizacji opiekuj\u0105c\u0105 si\u0119 binariami dla Windows<\/a>. Instalujemy i teoretycznie powinno wystarczy\u0107. Jest jednak do\u015b\u0107 zawi\u0142y do obej\u015bcia problem &#8211; zdobycie pliku <em>mod_ssl.so<\/em> w postaci skompilowanej jest praktycznie niemo\u017cliwe. Osobi\u015bcie nie znalaz\u0142em osobno, wyci\u0105gn\u0105\u0142em z paczki z SSL, <a href=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-mod_ssl.7z\">podziel\u0119 si\u0119 nim<\/a>, no problem. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Po \u015bci\u0105gni\u0119ciu, wystarczy rozpakowa\u0107 modu\u0142 do katalogu <em>modules<\/em> serwera i mo\u017cna i\u015b\u0107 dalej. Nie b\u0119dzie to zawsze aktualna wersja, w chwili pisania tego tekstu gwizdn\u0105\u0142em go z binarki wersji 2.2.11. Wszystkie narz\u0119dzia ju\u017c mamy, jedziemy dalej.<\/p>\n<h3>Generowanie certyfikatu<\/h3>\n<p>Zazwyczaj sytuacjs przedstawi si\u0119 tak, \u017ce nie b\u0119dziemy posiadali certyfikatu, trzeba go wi\u0119c wygenerowa\u0107 samodzielnie. Otwieramy wiersz polece\u0144 (<em>cmd<\/em>), przechodzimy do katalogu, w kt\u00f3rym znajduje si\u0119 binarka <em>openssl<\/em> (w przypadku Apache z SSL &#8211; <em>\\Apache2.2\\bin<\/em>, samodzielne OpenSSL &#8211; <em>\\OpenSSL\\bin<\/em>) i klepiemy dwa polecenia:<\/p>\n<p><code lang=\"batch\">openssl genrsa > server.pem<br \/>\nopenssl req -new -x509 -sha1 -days 365 -config ..\\conf\\openssl.cnf -key server.pem > server.crt<\/code><\/p>\n<p>I teraz ma\u0142a legenda. Je\u015bli korzystamy z osobnej instalki OpenSSL, to parametr <em>-config ..\\conf\\openssl.cnf<\/em> sobie darujemy. Plik jest w tym katalogu, wi\u0119c nie ma problemu. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p>Kopiujemy teraz pliki <em>server.pem<\/em> i <em>server.crt<\/em> do katalogu <em>conf<\/em> naszej instalki Apache.<\/p>\n<p>Aha, z tego powodu, i\u017c certyfikat jest w\u0142asnej produkcji, przegl\u0105darki b\u0119d\u0105 ostrzega\u0107 odpowiednim okienkiem przy ka\u017cdej sesji. W np. Operze mo\u017cna &#8222;zaufa\u0107&#8221; certyfikatowi przerzucaj\u0105c si\u0119 na drug\u0105 zak\u0142adk\u0119 w okienku ostrze\u017cenia i zaznaczaj\u0105c odpowiedni\u0105 opcj\u0119.<\/p>\n<p class=\"images\"><a href=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-2.png\" title=\"Dodawanie do zaufanych\" rel=\"imagebox-fd\"><img decoding=\"async\" src=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-2-thumb.jpg\" alt=\"niezaufany certyfikat\" style=\"width: 127px; height: 120px\" \/><\/a><\/p>\n<h3>Konfiguracja<\/h3>\n<p>Teraz ju\u017c wsp\u00f3lnie dla obu wersji. Otwieramy w notatniku plik <em>conf\/httpd.conf<\/em>. I namierzamy linijki:<\/p>\n<p><code>#LoadModule ssl_module modules\/mod_ssl.so<br \/>\n#Include conf\/extra\/httpd-ssl.conf<\/code><\/p>\n<p>I usuwamy <em>#<\/em> z pocz\u0105tku linijek. Restart Apache&#8230; I po wpisaniu <em>https:\/\/127.0.0.1<\/em> powinni\u015bmy ujrze\u0107 dumnie brzmi\u0105ce <em>It works!<\/em>.<\/p>\n<h3>Finito<\/h3>\n<p>Po klikni\u0119ciu odpowiedniej ikonki w przegl\u0105darce mo\u017cna si\u0119 upewni\u0107, \u017ce transmisja jest faktycznie szyfrowana:<\/p>\n<p class=\"images\"><a href=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-3.png\" title=\"Szyfrowanie aktywne\" rel=\"imagebox-fd\"><img decoding=\"async\" src=\"\/weblog\/stuff\/114-apache-22-pod-windows-z-ssl-3-thumb.jpg\" alt=\"informacje o szyfrowaniu\" style=\"width: 127px; height: 120px\" \/><\/a><\/p>\n<p>Przedstawi\u0142em najprostszy spos\u00f3b na uaktywnienie szyfrowanej transmisji SSL pod Apache. Nie jest to, oczywi\u015bcie, idea\u0142, ale 256-bitowy <a href=\"http:\/\/pl.wikipedia.org\/wiki\/Advanced_Encryption_Standard\">AES<\/a> powinien zadowoli\u0107 nawet najbardziej przeczulonych na punkcie prywatno\u015bci. Fakt, certyfikat nie nale\u017cy do najbezpieczniejszych, ale sama transmisja powinna by\u0107 &#8211; na chwil\u0119 obecn\u0105, oczywi\u015bcie &#8211; niepods\u0142uchiwalna. <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_smile.png\" alt=\":)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n<p>Wiadomo, do cel\u00f3w produkcyjnych jest to bardzo wst\u0119pny opis, ale na w\u0142asne potrzeby, czemu nie? <img src=\"https:\/\/eriz.pcinside.pl\/weblog\/wp-includes\/images\/smilies\/e_wink.png\" alt=\";)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Zapraszam do dyskusji.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wcze\u015bniej pisa\u0142em o instalowaniu Apache. Ok, (chyba) dzia\u0142a, ale nie ma opcji zestawiania po\u0142\u0105cze\u0144 poprzez SSL. Dzisiaj zajmiemy si\u0119 instalacj\u0105 wersji obs\u0142uguj\u0105cej po\u0142\u0105czenia szyfrowane. Tak naprawd\u0119, ca\u0142a czynno\u015b\u0107 nie jest szczeg\u00f3lnie trudniejsza od tej, do kt\u00f3rej zalinkowa\u0142em. Je\u015bli wszystko ruszy\u0142o z kopyta w wersji bez SSL, mo\u017cna powiedzie\u0107, \u017ce instalacja wersji obs\u0142uguj\u0105cej szyfrowanie oka\u017ce si\u0119 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[37,32,29],"_links":{"self":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/posts\/114"}],"collection":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/comments?post=114"}],"version-history":[{"count":0,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/posts\/114\/revisions"}],"wp:attachment":[{"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/media?parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/categories?post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eriz.pcinside.pl\/weblog\/wp-json\/wp\/v2\/tags?post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}