Certyfikat SSL na XAMPP-ie — jak?

Kategoria: Webmastering Data publikacji: 19 komentarzy

Jak to zrobić, by strona uruchomiona na deweloperskim serwerze WWW miała certyfikat SSL uważany przez przeglądarkę za zaufany? Bardzo prosto!

Wystarczy tylko wygenerować sobie certyfikat self-signed (samodzielnie podpisany), dodać go do konfiguracji serwera WWW oraz dodać go do przeglądarki używanej do prac nad stroną. W moim przykładzie wykorzystam system operacyjny Manjaro Linux, zestaw oprogramowania XAMPP oraz przeglądarkę Firefox.

Wygenerowanie certyfikatu

Najpierw należy wygenerować certyfikat. Odsyłam tutaj do artykułu „Generowanie własnego certyfikatu SSL” na blogu ITCore Tech. Dla ułatwienia sobie pracy przygotowałem prosty skrypt bash wykorzystujący polecenia podane w artykule.

#!/bin/bash

# źródło: https://tech-itcore.pl/2012/07/04/generowanie-wlasnego-certyfikatu-ssl/

if [ $1 ]
then

	echo -e "\n\n        ~~~ Generowanie klucza ~~~\n"
	openssl genrsa -des3 -out $1.key 4096

	echo -e "\n\n        ~~~ Generowanie żądania certyfikatu ~~~\n"
	openssl req -new -key $1.key -out $1.csr

	echo -e "\n\n        ~~~ Generowanie certyfikatu ~~~\n"
	openssl x509 -req -days 730 -in $1.csr  -signkey $1.key -out $1.crt

	echo -e "\n\n        ~~~ Generowanie klucza bez hasła ~~~\n"
	openssl rsa -in $1.key -out $1.key

	echo -e "\n\n            ~~~ Gotowe! ~~~\n"

else
	echo -e "\n\n    ~~~ Podaj jako argument nazwę dla plików. ~~~\n"
fi

Skrypt możemy zapisać jako na przykład generowanie-certyfikatu.sh. Należy jako argument podać nazwę dla każdego z generowanych plików. Sugeruję użycie nazwy „server”, gdyż takiej oczekuje domyślna konfiguracja XAMPP-a. Po uruchomieniu skryptu nastąpi:

  • wygenerowanie pliku server.key, czyli klucza — podajemy wtedy hasło;
  • wygenerowanie pliku server.csr, czyli żądania certyfikatu — podajemy wtedy ponownie hasło oraz wszystkie dane, o które zapyta OpenSSL: kod kraju, nazwę organizacji, a w szczególności „Common Name (e.g. server FQDN or YOUR name)” czyli w naszym przypadku domenę: localhost;
  • wygenerowanie pliku server.crt, czyli właściwego certyfikatu — po raz kolejny podajemy hasło do klucza;
  • ponowne wygenerowanie pliku server.key z kluczem, ale już pozbawionym hasła.

Dodanie certyfikatu do XAMPP-a

Pliki server.crt oraz server.key należy umieścić odpowiednio w folderach etc/ssl.crt oraz etc/ssl.key w głównym katalogu XAMPP-a, czyli domyślnie /opt/lampp. Zadanie wykonają, uruchomione w katalogu zawierającym stworzone pliki, polecenia:

sudo cp server.key /opt/lampp/etc/ssl.key
sudo cp server.crt /opt/lampp/etc/ssl.crt

Następnie należy zrestartować XAMPP-a.

(W systemie Windows pliki umieścić trzeba w podfolderach ssl.keyssl.crt katalogu C:\xampp\apache\conf).

Dodanie certyfikatu do przeglądarki

Ostatnim krokiem jest upewnienie przeglądarki, że certyfikat jest zaufany pomimo, że nie jest podpisany przez żaden organ certyfikujący. W tym celu należy dodać certyfikat do magazynu certyfikatów przeglądarki, ale nie poprzez wejście na stronę przez HTTPS i dodanie wyjątku dla strony, lecz poprzez manualne dodanie certyfikatu.

W przeglądarce Firefox przechodzimy do menu: Edycja, Preferencje (w Windows: Narzędzia, Opcje), następnie: Zaawansowane, Certyfikaty, Wyświetl certyfikaty. W oknie Magazyn certyfikatów przechodzimy do karty Organy certyfikacji, wybieramy Importuj… i wskazujemy wygenerowany plik server.crt. Po dodaniu certyfikatu konieczny jest pełny restart przeglądarki.

(W przeglądarce Google Chrome, podobnie jak w Firefoksie, można dodać certyfikat do jej własnego magazynu. Natomiast Internet Explorer używa magazynu Windows, stąd należy użyć systemowego menadżera certyfikatów — certmgr.msc w oknie Uruchom.)

Komentarze (19)

  1. winek

    Prawdę mówiąc (z perspektywy użytkownika Linuksa) nie lubię pakietów „wszystko w jednym”, gdy identyczny efekt można osiągnąć instalując pakiety z repozytorium i wkładając minimalny wysiłek w konfigurację.

    Niemniej – dobry wpis, cieszę się że wróciłeś do blogowania.

  2. mqdesu

    Wpis nie dla laików. Napisałeś to w tak wielkim skrócie, że trudno nazwać to poradnikiem, czy jakimkolwiek manualem/tutorialem. Po pierwsze, jak mają to zrobić osoby korzystające z Windowsa? Tam nie ma basha. Na początku wpisu warto zaznaczyć, że jest to tutorial dla ZAAWANSOWANYCH użytkowników.

  3. Tomasz Gąsior

    @winek, dzięki za koment! Za osobiście lubię pakiety „wszystko w jednym”. Środowisko deweloperskie przygotowane przez twórców takiego pakietu mam wtedy osobno, a używane przeze mnie komponenty dublujące się z tymi w pakiecie — bezpośrednio w systemie (np. z PHP tak mam).

  4. Tomasz Gąsior

    @mqdesu — używam na co dzień Manjaro i to z pozycji użytkownika systemów linuksowych pisałem ten wpis. Nierozgarnięty użytkownik Windows i tak tematu „nie ogarnie”, a ten bardziej kumaty — dowie się, poszuka w Internecie, jak uruchomić polecenie „openssl” w wierszu polecenia CMD.EXE oraz do jakich folderów co wrzucić. Nie potrzeba do tego basha. A propos basha — na Windows 10 przecież jest! ;-)

    Poza tym. Windows i systemy linuksowe mają różne zalety i wady, ale powiedzmy sobie szczerze: Linuksy do programowania są wygodniejsze, naprawdę szczerze i obiektywnie. No chyba, że w technologiach Microsoftu, wtedy raczej nie.

  5. mqdesu

    To też wolę sobie poszukać czegoś innego, bo Twój wpis jest typowo nerdowski. Nie każdy użytkownik Windowsa jest nierozgarnięty. Jest takie przysłowie: „Nie pamiętał wół, jak cielęciem był…. Także… nie szpanuj.

  6. winek

    @mqdesu, ale Tomek nie powiedział nigdzie, że każdy użytkownik Windowsa jest nierozgarnięty, zamiast tego podzielił tę grupę według poziomu umiejętności.

    To post skierowany do zaawansowanych użytkowników. Początkujący nie zdaje sobie sprawy, po co certyfikat w środowisku developerskim XAMPP (lub: i co to w ogóle jest ten XAMPP?). Zaawansowany i tak prędzej trafi tutaj za pośrednictwem wyszukiwarki.

    Tu, w internecie mamy wolny rynek*. Nikt nie nakazuje Pani konsumpcji tych treści, a zabrania innych. Proszę poszukać czegoś innego.

    * – well, nie do końca, ale to temat na osobną dyskusję…

  7. mqdesu

    @winek Tomek napisał „Nierozgarnięty użytkownik Windows i tak tematu „nie ogarnie”,” a to można odebrać jako każdy. Ja chętnie czytam blog Tomka od 7 lat, natomiast ten wpis akurat nie bardzo do mnie trafia i mam prawo do takiej opinii. Moim zdaniem warto przemoderować tytuł. Tutoriale tutorialami, mój hosting i tak przez jakiś błąd uniemożliwia aktywowanie SSL-a na stronach :/

  8. Zachariasz

    @mqdesu Nikogo problem z twoim hostingiem nie interesuje. Wpis bardzo dobry, gratuluję.

  9. Zachariasz

    Zgodnie z zasadami naszego kochanego języka polskiego, mówi się „dlaczego jesteś niemiły”. Niepotrzebnie poruszasz swoje prywatne problemy w wpisach, które tego nie dotyczą – podobnie jak wyrzuty do autora, że nie odzywa się na gadu czy innym komunikatorze. Jak nie chce się odzywać, to się nie odzywa – to jest sprawa między wami. Wykazujesz się całkowitym brakiem jakiejkolwiek klasy poruszając ten temat na forum publicznym – masz żal, że Ci nie odpisuje, napisz to do niego. Nikt inny nie powinien o tym wiedzieć. Poza tym Twoje komentarze dotyczące nerdowskiego charakteru wpisu również pominę – autor nigdzie nie zaznaczył, że wpis jest adresowany do neptyków. Z pewnością tematyka poruszona w tym wpisie do takich nie należy. Pozdrawiam i nie traktuj tego jako ataku w stronę kobiety ze strony samca alfa. To zwykłe zwrócenie uwagi na niezbyt odpowiednie zachowanie w komentarzach.

  10. mqdesu

    Jak się chcesz popisywać poprawną polszczyzną, to lepiej jakbyś się zarejestrował na forum polonistycznym. Ja piszę, tak jak umiem. Wybacz, ale to co ja piszę w komentarzach nie powinno Ciebie interesować. To co piszę do Tomka nie jest żadnym wyrzutem, po prostu nie lubię niesłowności, jak ktoś się umawia i nie odpisuje. Nie znasz mnie, więc nie oceniaj (owy brak klasy). Mam prawo mieć negatywną opinię o niektórych wpisach Tomka. Czyż nie można tutaj wyrazić krytycznej opinii, tylko te pozytywne??? To Twoje subiektywne zdanie, że akurat ten wpis jest zrozumiały, no przykro mi bardzo, ale nie dla mnie. To, że dla Ciebie coś jest zrozumiałe, nie znaczy że dla kogoś innego. Jest takie przysłowie – nie mierz innych swoją miarą.

  11. mqdesu

    P.S. Język polski nie jest moim rodzimym językiem, ale tego nie wiesz, jednak ocenianie kogoś nieznajomego wychodzi Ci nader łatwo.

  12. Zachariasz

    Możemy porozmawiać i po niemiecku :) Nie widzę w tym najmniejszego problemu. Pozdrawiam.

  13. mqdesu

    @Zachariasz tutaj zrobiłby się bagałan. W razie czego mam mejla. Z pewnością łatwo go znajdziesz, skoro tyle o mnie wiesz. Tam możesz skierować wszelkie zastrzeżenia co do mojej osoby. Pozdrawiam.

  14. Tomasz Gąsior

    Nie jestem fanem systemu Windows, jednak moja wypowiedź może być niejednoznaczna, panie komentatorze. Jeżeli czujesz się urażony tą wypowiedzią, najmocniej przepraszam.

    Nie miałem na myśli tego, że każdy użytkownik systemu Windows jest nierozgarnięty, a raczej, że wśród użytkowników Windows wyróżnić można nierozgarniętych (w domyśle: nieposiadających podstawowej wiedzy technicznej o OS-ie), którzy i tak tego wpisu nie zrozumieją oraz bardziej zaawansowanych, dla których nie będzie problemem fakt, iż wpis jest napisany z perspektywy użytkownika systemu linuksowego (bo poradzą sobie z odnalezieniem folderów pod inną ścieżką).

  15. Kasia

    Jaka może być przyczyna że generowanie certyfikatu „zawisa” i nie idzie dalej [bash pod Windows]?
    Jest „Generating RSA (…) ……..+++++” i wisi od dłuższego czasu, kursor sobie miga i nie wychodzi z operacji, co więcej przerwanie CTRL+C też nie przynosi efektu.

  16. Tomasz Gąsior

    Niestety nie używam Windows do dewelopmentu, więc nie mam pojęcia. Proponuję poszukać w internecie gotowego tutoriala specyficznie dla Windows, może tak będzie najlepiej.

Dodaj komentarz