Tworzenie certyfikatu ssl dla strony internetowej.

Nic trudnego, ale zawsze gdy tworzę certyfikat (a robię to co kilka miesięcy) kończy się to zwykle ponownym przeglądaniem Internetu. Poniżej zamieszczam procedurę, która zadziała w większości wypadków.

Potrzebujemy:

  • strony hostującej naszą stronę
  • utworzyć żądanie z certyfikatem – CSR (najprościej pod linuksem lub macos lub w podsystemie linux w windowsie)
  • przesłać certyfikat do instytucji certyfikującej
  • potwierdzić, że strona (domena) należy do nas
  • zainstalować certyfikat u naszego providera hostującego naszą stronę

Listę instytucji certyfikujących można łatwo odnaleźć w Internecnie. Ja ostatnio skorzystałem z promocji na stronie namecheap gdzie udało mi się zakupić roczny certyfikat za 3$ 😉

Inna możliwość to skorzystanie z certyfikatu Let’s Encrypt https://letsencrypt.org/ gdzie można za darmo utworzyć certyfikat. Przydaje się to jedynie do testów bądź w sytucaji gdy nasz dostawca hostingowy zaimplementował automatykę do odnawiania certyfikatu. Let’s Encrypt generuje darmowy certyfikat ważny tylko przez 3 mc-e.
Bez automatyki można oczywiście odnawiać ten certyfikat samodzielnie za pomocą zainstalowanego certbot na swoim komputerze i ręcznego odświeżania na stronie ale na koniec dnia jest dosyć kłopotliwe.

Tworzenie żądania certyfikatu CSR

Na stacji ze środowiskiem “uniksowym” za pomocą polecenia:

sudo openssl req -new -newkey rsa:2048 -nodes -keyout nazwa_domeny.key -out nazwa_domeny.csr 

Polecenie to tworzy dwa pliki wynikowe:

  • nazwa_domeny.key – to jest klucz prywatny, plik jest bardzo ważny i wykorzystamy go później przy instalacji
    plik ten zaczyna i kończy się następującymi liniami:
    —–BEGIN PRIVATE KEY—–
    klucz
    —–END PRIVATE KEY—–
  • nazwa_domeny.csr – CSR który musimy skopiować dostawcy certyfikatu. Plik ten ma następujący format:
    —–BEGIN CERTIFICATE REQUEST—–
    certyfikat
    —–END CERTIFICATE REQUEST—–

Formularz można wypełnić w następujący sposób:

Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:wielkopolskie
Locality Name (eg, city) []:Poznan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizacja
Organizational Unit Name (eg, section) []:Dzial
Common Name (e.g. server FQDN or YOUR name) []:nazwa_domeny.XXX
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Ważne są pola które uzupełniłem powyżej. Najważniejsze z nich to “common name” które musi odpowiadać nazwie naszej domeny. Pamiętaj, że domena “jakas-nazwa.xxx” to inna domena niż “www.jakas-nazwa.xxx”. Jeśli nie planujesz kupić certyfikatu typu wildcard musisz o tym pamiętać. Niektóre instytucje certyfikujące uwzględniają to przy generowaniu certyfikatu – inne nie.
Pola: e-mail address, challenge password, optional company name należy traktować jako deprecated i mogą pozostać puste.

Uwaga, czasem należy wklejać pierwszą i ostatnią linię a czasem nie. Zależy to od naszego dostawcy hostingu i certyfikatu i należy dokładnie czytać instrukcję.

CSR i private key można utworzyć również na stronie https://csrgenerator.com/ Pytanie tylko, czy chcemy się dzielić kluczem prywatnym z jakąś firmą trzecią.

Potwierzenie, że strona (domena) należy do nas

Można to zrobić na wiele sposobów. Zwykle umożliwia się wprowadzenie odpowiednich modyfikacji do strony internetowej lub potwierdzenie za pomocą e-mail (konkretnych adresów e-mail w naszej domenie internetowej; przyładem takiego użytkownika zwykle wykorzystywanym jest webmaster@nasza-domena.xx).

Po potwierdzeniu, powinniśmy otrzymać plik CRT z certyfikatem który umieszczamy na stronie. Plik CRT ma następujący format:

—–BEGIN CERTIFICATE—–
certyfikat
—–END CERTIFICATE—–

Instalacja certyfikatu u naszego dostawcy hostingu

W zależności od firmy hostującej wygląda to trochę inaczej. Ale zwykle sprowadza się to do wklejenia kombinacji certyfikatu CRT oraz klucza prywatnego.


Podsumowanie

Procedura jest prosta natomiast jest wiele miejsc w których można potencjalnie popaść w problemy. Wiele zależy od firmy hostującej i zawsze warto poszukać dokumentacji lub ewentualnie skontaktować się z jej pomocą techniczną. Warto też poświęcić trochę czasu przy zakupie certyfikatu, różnica cenowa waha się od kilku do kilkudziesięciu dolarów.

No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Linux
podcast

All podcast applications I have tested were quite OK(ish) – but I have always struggled with organizing podcasts, creating playlists, etc. It has always been challenging. Therefore, for me, it is more convenient to download podcasts as MP3s and manage them myself (in VLC, for example). There are many ways to do that, but my favorite …

Linux
jellyfin configuration in lxc container

Jellyfin is extremely useful software providing home streaming system. I am using it since a while for streaming my old ripped DVD, which I love to watch again and again. Jellyfin is opensource, cross platform as a server and as a client, including client for android and iOS. It is …

Linux
Various helpful Linux commands for file manipulations

Change file name for all files that contains “[any text]” substring to the same name without that.