Czym jest mityczny SSL?
To sposób szyfrowania transmisji pomiędzy serwerem a klientem.
Przykłady:
Rodzaje ruchu
W naszym przypadku najważniejsze jest zabezpieczenie naszego serwera ze stroną WWW. Czego będziemy potrzebować? Klucza prywatnego oraz certyfikatu serwera. Przyda nam się także certyfikat centrum autoryzacyjnego – instytucji, która jako zaufana generuje klucze i certyfikaty.
Większość Centrów Autoryzacji sprzedaje certyfikaty. Istnieje możliwość skorzystania z projektu Let’s Encrypt. Dzięki temu rozwiązaniu możemy uruchomić program certbot i (prawie) zapomnieć o odnawianiu certyfikatów – program zrobi to za nas sam (jeśli się na to zgodzimy).
A co jeśli chcemy certyfikaty wygenerować sami (czyli posiadać certyfikat self-signed)?
Jest to niezmiernie proste jeśli będziemy uważnie wykonywać kolejne komendy:
Wszędzie, gdzie napisałem $nazwa_pliku należy wpisać jednolitą nazwę pliku (najlepiej nazwę naszej domeny, w moim przypadku myhomelab.edu.pl).
Najpierw generujemy certyfikat dla naszego CA:
openssl genrsa -out $nazwa_pliku-rootCA.key 4096
– 4096 (argument wyrażony liczbą) oznacza siłę szyfrowania. Im większa tym bezpieczniej lecz i certyfikat będzie się dłużej generować.
Następnie generujemy certyfikat:
openssl req -x509 -new -nodes -key $nazwa_pliku-rootCA.key -sha256 -days 3650 -out $nazwa_pliku-rootCA.crt
– x509 to standard wedle jakiego ma być wygenerowany klucz i certyfikat.
Generujemy klucz prywatny serwera:
openssl genrsa -out $nazwa_pliku.key 2048
Generujemy żądanie *.csr:
openssl req -new -sha256 -key $nazwa_pliku.key -out $nazwa_pliku.csr
– sha256 oznacza zestaw funkcji kryptograficznych opracowanych przez NSA.
Sprawdzamy czy plik *.csr się dobrze wygenerował:
openssl req -in $nazwa_pliku.csr -noout -text
– noout oznacza brak wyjścia do pliku,
– text to pokazanie tekstem zawartości pliku.
Wiążemy plik *.csr z certyfikatem CA i kluczem CA:
openssl x509 -req -in $nazwa_pliku.csr -CA $nazwa_pliku-rootCA.crt -CAkey $nazwa_pliku-rootCA.key -CAcreateserial -out $nazwa_pliku.crt -days 3650 -sha256
– days + argument wyrażony liczbą oznacza liczbę dni ważności certyfikatu.
Sprawdzamy plik *.crt:
openssl x509 -in $nazwa_pliku.crt -text -noout
Konwertujemy plik *.crt do formatu *.pem:
openssl x509 -in $nazwa_pliku.crt -out $nazwa_pliku.pem -outform PEM
– outform oznacza formę wyjściową.
Generujemy plik *.pem dla CA:
openssl x509 -in $nazwa_pliku-rootCA.crt -out $nazwa_pliku-rootCA.pem -outform PEM
Kopiujemy nasze pliki do katalogu /etc/ssl/ lub innego wskazanego przez konfigurację serwera:
cp $nazwa_pliku-rootCA.pem /etc/ssl/
– cp to polecenie kopiowania
cp $nazwa_pliku.pem /etc/ssl/
cp $nazwa_pliku.crt /etc/ssl/
A jak użyć wygenerowanych certyfikatów? Niedługo się dowiemy!