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.

Free(BSD)
Search for duplicated files

This will be short (but hopefully I will find more time to show entire process to search duplicated files together with some examples). In case you are searching for duplicated files I can recommend two software which actually rocks in openSource world

Linux
2
“Gaming laptop”, steam link and rustdesk.

Not really related to this article, but just wanted to describe the situation.  Most of the time I am working on Linux or Mac. Not a big deal, but last year we bought my daughter a kind of gaming laptop. I am saying kind of, because IMHO there is no …

Azure
NFS issue, cannot be mounted or is not visible

The same kind of issue I have encountered numerous times while working across different environments and with various customers. The problem with NFS mounts connected from remote locations is so common. This issue extends beyond communication solely over WAN and also include connections between datacenters (DC) where we lack control …