Samopodpisany certyfikat SSL wykorzystywany jest głównie w środowiskach wewnętrznych oraz do testów, kiedy to nie występuje potrzeba skorzystania z zewnętrznego urzędu certyfikacji.
Te samopodpisane certyfikaty są rzadko wykorzystywane do produkcji, w szczególności dlatego, że nie gwarantują odpowiedniego poziomu niezawodności, ponieważ nie są weryfikowane przez urząd certyfikacji.
Z drugiej strony, jeśli jesteś zainteresowany uzyskaniem bezpłatnego certyfikatu SSL wydanego przez zewnętrzny urząd certyfikacji, możesz postępować zgodnie z naszym przewodnikiem na temat zabezpieczania Apache za pomocą Let's Encrypt na Ubuntu 18.04.
Najpierw połącz się z serwerem za pośrednictwem połączenia SSH. Jeśli jeszcze tego nie zrobiłeś, zalecamy skorzystanie z naszego przewodnika, aby bezpiecznie połączyć się z SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal swojego serwera.
Utworzenie klucza prywatnego
W pierwszej kolejności utwórz klucz prywatny, aby uzyskać certyfikat publiczny
Aby utworzyć klucz prywatny, użyj klienta OpenSSL;
$ sudo openssl genrsa -aes128 -out private.key 2048
To polecenie służy do określenia utworzenia klucza prywatnego o długości 2048 bitów, który zostanie zapisany w pliku private.key.
Generating RSA private key, 2048 bit long modulus
....+++
...................+++
e is 65537 (0x010001)
Enter pass phrase for privata.key:
Verifying - Enter pass phrase for private.key:
Zostaniesz poproszony o zabezpieczenie klucza przy pomocy hasła, które musi zawierać przynajmniej 4 znaki.
Tworzenie Żądania Podpisania Certyfikatu (CSR)
Po wygenerowaniu klucza prywatnego utwórz żądanie podpisania certyfikatu (CSR), które określi szczegóły dotyczące certyfikatu.
$ sudo openssl req -new -days 365 -key private.key -out request.csr
OpenSSL poprosi cię o podanie informacji o certyfikacie, które należy wypełnić w następujący sposób:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: IT
State or Province Name (full name) [Some-State]: Lazio
Locality Name (eg, city) []: Rome
Organization Name (eg, company) [Internet Widgits Pty Ltd]: My Society
Organizational Unit Name (eg, section) []: Security
Common Name (e.g. server FQDN or YOUR name) []: example.it
Email Address []: [email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: An optional company name []:
W kolejnym kroku zostaniesz zapytany o hasło.
Plik request.csr ze wszystkimi wprowadzonymi przydatnymi informacjami zostanie utworzony w celu wygenerowania certyfikatu.
Generowanie certyfikatu SSL
Kontynuuj generowanie certyfikatu poprzez podanie komendy:
$ sudo openssl x509 -in request.csr -out certificate.crt -req -signkey private.key -days 365
Gdzie:
-
dla parametru -in wskaż plik CSR
-
dla parametru -out podaj nazwę pliku który będzie zawierać certyfikat
-
dla parametru -signkey podaj swój klucz prywatny
-
dla parametru -days określ liczbę dni ważności certyfikatu, który ma zostać utworzony
Jeśli procedura tworzenia została przeprowadzona poprawnie, następujący komunikat zostanie wyświetlony:
Następnie wyświetlone zostaną szczegóły certyfikatu zgodnie z parametrami ustalonymi wcześniej.
Po ich wyświetleniu ponownie zostaniesz poproszony o hasło certyfikatu.
Wreszcie plik certificate.crt jest gotowy do użycia na wiele sposobów, na przykład do ochrony połączenia z serwerem WWW.