Jak pod Linuxem wygenerować żądanie podpisania certyfikatu

Zanim operator wystawi certyfikat SSL trzeba dostarczyć mu CSR – żądanie podpisania certyfikatu. Zawiera ono klucz publiczny oraz podstawowe informacje o organizacji bądź osobie która się o niego ubiega.

Chesz przetestować działanie poniższych instrukcji, a nie masz dostępu do serwera Linuxowego? Po rejestacji na DigitalOcean otrzymasz 100 dolarów do wykorzystania w ciągu 60 dni, a z przyjaznym interfejsem uruchomisz ulubioną dystrybucję w ciągu paru minut.

Warto pamiętać o bezpiecznym przechowywaniu klucza prywatnego oraz certyfikatu jeżeli już zostanie on wystawiony tak, by osoby nieuprawnione nie miały do niego dostępu.

Najwygodniej jest wygenerować nowy klucz, a następnie użyć go do utworzenia żądania podpisania certyfikatu. W obu przypadkach, gdy robione jest to pod Linuxem, wykorzystywane jest polecenie openssl.

Wygenerowanie klucza prywatnego to kwestia raptem jednego polecenia

# openssl genrsa -out ./jakasfirma-com.key 2048

Generating RSA private key, 2048 bit long modulus
........+++
........+++
e is 65537 (0x10001)

Rozpoczęcie generowanie pliku CSR to ponownie wywołanie polecenia openssl i przekazanie do niego wygenerowanego wcześniej klucza. Poniższy zapis działania polecenia rozbity jest na dwie mniejsze części.

# openssl req -new -sha256 -key ./jakasfirma-com.key -out ./jakasfirma-com.csr

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.
-----

Schody zaczynają się gdy trzeba podać dane potrzebne do wystawienia certyfikatu:

  • Dwuliterowy kod kraju. W razie wątpliwości można go odszukać na stronie ISO. W przypadku Polski będzie to oczywiście PL.
  • Nazwa stanu, prowincji czy, w przypadku Polski, województwa. Na przykład Slaskie lub użyte w przykładzie Mazowieckie.
  • Nazwa miejscowości w której znajduje się firma bądź mieszka osoba dla której generowany jest CSR.
  • Nazwa podmiotu lub firmy ubiegającej się o certyfikat. W przypadku osoby fizycznej wpisywane jest jej imię i nazwisko.
  • Nazwa działu który zleca utworzenie certyfikatu. Gdy takowej nie ma zwykle wpisuje się po prostu IT.
  • Nazwa wspólna. W przypadku zwykłego certyfikatu jest to po prostu adres. W przykładzie użyto jakasfirma.com. Gdy wystawiany jest wildcard będzie to *.jakasfirma.com.
  • Adres email firmy bądź osoby dla której wystawiany jest certyfikat.

Następnie openssl zapyta o dodatkowe informacje które będą umieszczone w certyfikacie. Niestety część, o ile nie większość, operatorów ich nie wspiera dlatego bezpieczniej będzie nie wpisywać żadnych wartości.

Country Name (2 letter code) [XX]:PL
State or Province Name (full name) []:Mazowieckie
Locality Name (eg, city) [Default City]:Warszawa
Organization Name (eg, company) [Default Company Ltd]:Jaks Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:jakasfirma.com
Email Address []:biuro@jakasfirma.com

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