Tłumacząc Certificate Signing Request (CSR) na język polski otrzymamy Żądanie Podpisania Certyfikatu i nazwa dokładnie wskazuje czym jest ten kilkuset bajtowy plik. CSR zawiera w sobie wszystkie informacje niezbędne do wystawienia certyfikatu SSL przez firmę będącą Certificate Authority (CA), na przykład przez GeoTrust czy RapidSSL. Certificate Signing Request to pierwszy i niezbędny krok w procesie uzyskania certyfikatu — swego rodzaju podanie.
Przykładowy plik CSR (UWAGA: to tylko przykład i nie możesz wykorzystać go do wygenerowania własnego certyfikatu! Jak stworzyć własny CSR dowiesz się z kolejnych postów):
-----BEGIN CERTIFICATE REQUEST----- MIIB3jCCAUcCAQAwgZ0xCzAJBgNVBAYTAlBMMRQwEgYDVQQIEwtEb2xueSBTbGFz azEQMA4GA1UEBxMHV3JvY2xhdzEjMCEGA1UEChMaSU1BR0lOIElUIE1hcmNpbiBF bmdlbG1hbm4xETAPBgNVBAsTCER6aWFsIElUMRAwDgYDVQQDEwd0ZXN0b3dhMRww GgYJKoZIhvcNAQkBFg1hZG1pbkB0ZXN0b3dhMIGfMA0GCSqGSIb3DQEBAQUAA4GN ADCBiQKBgQC/aKZE92YDja9vRcI0xzJtBleEfoBHEkpEgGudoirEKsloNGBbTV9a iTG2852o4WyfkEf+sF3Bx2DIlyIj53k9Ud2+OjbMRpQTNkDafk/MKL3vH7vFiWYn iMkUmr8zRkFCV1J8nsfxE2Ue6427gc/QCEtNnoEOP7OFFVq3sjHXfQIDAQABoAAw DQYJKoZIhvcNAQEFBQADgYEAZjoSVvigQzSrwGi/N2pIEqmRD/MJUQF63wfUmqci O98XcEVFIY9EZEk7wa6oiUAVT1w+bwhmwEUvNfMGB75eaZD1WM9mZ4nisGpQlpCy W+EoA12lDzHg2H3jUaBBZB8LWJJDAh5jPu6jbpb9LB/tLCrrWL0vsZtBVbfwP2Hq UbE= -----END CERTIFICATE REQUEST-----
Certificate Signing Request rozpoczyna się zawsze linią —–BEGIN CERTIFICATE REQUEST—– i kończy linią —–END CERTIFICATE REQUEST—–, które są jego integralną częścią (a nie tylko zawartość pomiędzy nimi).
CSR jest generowany najczęściej przez program (serwer), który będzie korzystał z certyfikatu SSL:
- serwer WWW: np. Apache, Microsoft IIS, BEA WebLogic Server, Tomcat
- serwer pocztowy: np. Microsoft Exchange
- bramka SSL VPN: np. Cisco Secure Access Control Server (ACS), Citrix Secure Gateway
- panel kontrolny: np. Plesk, cPanel, Ensim
W zależności od programu, proces generowania pliku CSR będzie przebiegał różnie. Jeśli masz dostęp do serwera, możesz zrobić to samodzielnie, jeśli nie, będziesz potrzebował pomocy firmy która utrzymuje Twoje serwery (na przykład firmy hostingowej, jeśli certyfikat SSL ma być wykorzystywany w Twoim serwisie WWW).
W kolejnych postach postaram się opisać krok po kroku proces generowania CSRa w kilku najpopularniejszych programach.
Jak to wygląda od strony technicznej
CSR zawiera w sobie informacje niezbędne do wykorzystania kryptografii asymetrycznej. Podczas tworzenia CSR tworzone są dwa pliki:
- KEY — plik z kluczem, jest to klucz prywatny w parze kluczy
- CSR — plik z Certificate Signing Request, który zawiera w sobie:
- klucz publiczny z pary kluczy
- informacje o Twojej firmie, adresie i nazwie domeny, dla której ma zostać wystawiony certyfikat
KEY i CSR tworzą nierozłączną parę i utrata jednego z nich sprawia, że drugi staje się nieprzydatny.
Po przesłaniu CSR do firmy będącej Certificate Authority (CA) informacje w nim zawarte zostają zweryfikowane, a następnie podpisane podpisem elektronicznym przez CA. W efekcie otrzymujesz gotowy certyfikat SSL, na który składają się znowu dwa pliki:
- KEY — plik z kluczem, jest to klucz prywatny w parze kluczy (dokładnie ten sam co poprzednio)
- CRT — plik z certyfikatem, który zawiera w sobie:
- klucz publiczny z pary kluczy
- informacje o Twojej firmie, adresie i nazwie domeny, dla której został wystawiony certyfikat
- podpis firmy będącej CA (np. GeoTrust lub RapidSSL), która potwierdza powyższe informacje swoim podpisem elektronicznym
Ponownie, KEY i CRT tworzą nierozłączną parę i utrata jednego z nich sprawia, że drugi staje się nieprzydatny (w dalszej części postu opisuję co się stanie jeśli stracisz klucz lub certyfikat).
W uproszczeniu można więc przyjąć, że certyfikat SSL (CRT) to Certificate Signing Request (CSR) podpisany przez uznaną organizację (CA), która potwierdza prawdziwość danych zawartych w certyfikacie.
Przeglądarki internetowe, które ufają temu CA (na to wpływa jeden z parametrów certyfikatów — rozpoznawalność uniquity) mogą zweryfikować informacje o domenie zawarte w certyfikacie (a wcześniej w CSR) oraz, korzystając z klucza publicznego znajdującego się również w certyfikacie (a wcześniej w CSR), zaszyfrować transmisję w taki sposób, że odszyfrować ją będziesz w stanie tylko Ty, korzystając z klucza prywatnego KEY.
Informacje zawarte w CSR
Do wygenerowania CSR konieczne będzie udzielenie odpowiedzi na kilka pytań dotyczących domeny i Twojej firmy/organizacji. Poniżej znajduje się zestawienie wszystkich danych zawartych w CSR wraz z wyjaśnieniem i przykładami.
Uwaga: W CSR nie wolno używać następujących znaków: < > ~ ! @ # $ % ^ / \ ( ) ? , &. Nie należy również używać znaków diaktrycznych (polskich liter z “ogonkami”) — dopuszczalny jest wyłącznie alfabet łaciński.
Common Name (CN) (host name, FQDN)
Pełna (kwalifikowana) nazwa domeny, dla której zostanie wystawiony certyfikat SSL. Musi być idealnie zgodna z nazwą, z której będziesz korzystał.
Jeśli chcesz chronić adres URL https://www.twoja-domena.pl, wtedy generując CSR powinieneś wpisać “www.twoja-domena.pl”. Jeśli będzie to https://panel.twoja-domena.pl, wpisz “panel.twoja-domena.pl”. Jeśli nie chcesz używać żadnej subdomeny, a więc URLem będzie https://twoja-domena.pl, Common Name to “twoja-domena.pl”.
Nie podawaj określenia protokołu https:// ani żadnych innych znaków (np. znaków ” czy /)
Jeśli chcesz korzystać z certyfikatu typu wildcard (przeczytaj kiedy warto wybrać certyfikat wildcard), wpisz “*.twoja-domena.pl”.
Organization (O)
Dokładna nazwa Twojej firmy lub organizacji. Nie używaj skrótów, które nie są powszechnie stosowane (Sp. z o.o. jest OK).
Informacja musi być zgodna z wpisem w bazie WHOIS (dla domen .pl zweryfikuj informacje w bazie WHOIS na stronie NASKu).
Organizational Unit (OU)
Nazwa działu w Twojej organizacji, który będzie korzystał z certyfikatu. Na przykład: “Dział IT”. Pole może pozostać puste.
City lub Locality (L)
Nazwa miasta, w której siedzibę ma firma. Nie stosuj skrótów.
Informacja musi być zgodna z wpisem w bazie WHOIS.
State (S) or Province
Nazwa województwa, w którym siedzibę ma firma. Nie stosuj skrótów.
Oczywiście informacja musi być zgodna z wpisem w bazie WHOIS.
Country (C)
Dwuliterowy skrót nazwy Państwa, w którym siedzibę ma firma, musi być zgodny ze standardem ISO 3166-1.
Dla Polski będzie to PL.
Niezmiennie informacja musi być zgodna z wpisem w bazie WHOIS.
Email
Pole niewykorzystywane, może pozostać puste. Nie ma znaczenia, co zostanie tutaj wpisane.
Siła klucza (Key Bit Length)
Zaleca się stosowanie klucza o wielkości przynajmniej 1024 bitów. Jednocześnie większe klucze mogą niepoprawnie działać ze starszymi przeglądarkami. Optymalną wartością są 1024 bity. Jeśli chcesz otrzymać certyfikat firmy GeoTrust, to masz prawo do ponownego otrzymania certyfikatu w każdej chwili na podstawie nowego kompletu KEY i CSR — będziesz mógł w ten sposób zmienić siłę klucza w późniejszym terminie.
Co się stanie, jeśli stracę plik KEY, CSR, CRT?
Jeśli stracisz CSR, a certyfikat został już wystawiony, to nie ma żadnego problemu — posługujesz się kluczem KEY i certyfikatem CRT.
Jeśli stracisz CSR, a certyfikat nie został jeszcze wystawiony, to również nie ma żadnego problemu, ponieważ możesz wygenerować kolejny plik CSR.
Jeśli stracisz klucz KEY lub certyfikat CRT, to niestety pojawia się problem, ponieważ przestaje być możliwe korzystanie z certyfikatu SSL, którego składowymi były oba te pliki. Jeśli posiadasz certyfikat firmy GeoTrust, to masz prawo do ponownego wystawienia certyfikatu za darmo (na tę samą firmę, domenę i z identycznym okresem ważności). Wystarczy, że wygenerujesz ponownie KEY i CSR i przejdziesz standardową procedurę wystawiania certyfikatu. Jeśli masz certyfikat firmy RapidSSL, to niestety musisz ponownie zapłacić za wystawienie nowego certyfikatu.
W kolejnych postach opiszę jak wygenerować CSR w najpopularniejszych programach (Linux i Windows).
