Żądanie podpisania certyfikatu

W systemach infrastruktury klucza publicznego (PKI) żądanie podpisania certyfikatu (również CSR lub prośba o certyfikację ) to wiadomość wysyłana od wnioskodawcy do urzędu certyfikacji infrastruktury klucza publicznego w celu ubiegania się o certyfikat tożsamości cyfrowej . Zwykle zawiera klucz publiczny, dla którego ma zostać wydany certyfikat, informacje identyfikujące (takie jak nazwa domeny) oraz dowód autentyczności, w tym ochronę integralności (np. podpis cyfrowy). Najpopularniejszym formatem CSR jest PKCS #10 ; inne obejmują bardziej wydajne formaty CRMF i Signed Public Key and Challenge SPKAC generowane przez niektóre przeglądarki internetowe .

Procedura

Przed utworzeniem żądania CSR dla certyfikatu X.509 wnioskodawca najpierw generuje parę kluczy , zachowując klucz prywatny w tajemnicy. CSR zawiera informacje identyfikujące wnioskodawcę (takie jak nazwa wyróżniająca ), klucz publiczny wybrany przez wnioskodawcę i ewentualnie dodatkowe informacje. W przypadku korzystania z formatu PKCS #10 wniosek musi być podpisany samodzielnie przy użyciu klucza prywatnego wnioskodawcy , który stanowi dowód posiadania klucza prywatnego, ale ogranicza użycie tego formatu do kluczy, których można użyć do podpisania. Do CSR należy dołączyć dowód pochodzenia (tj. dowód tożsamości wnioskodawcy), który jest wymagany przez urząd certyfikacji, a urząd certyfikacji może skontaktować się z wnioskodawcą w celu uzyskania dalszych informacji.

Typowe informacje wymagane w CSR (przykładowa kolumna z przykładowego certyfikatu X.509 ). Należy pamiętać, że często istnieją alternatywy dla nazw wyróżniających (DN), na liście znajduje się preferowana wartość.

DN Informacja Opis Próbka
CN Nazwa zwyczajowa To jest w pełni kwalifikowana nazwa domeny , którą chcesz zabezpieczyć *.wikipedia.org
O Nazwa organizacji Zwykle nazwa prawna firmy lub podmiotu i powinna zawierać wszelkie sufiksy, takie jak Ltd., Inc. lub Corp. Fundacja Wikimedia, Inc.
jednostka organizacyjna Jednostka organizacyjna Nazwa działu/działu organizacji wewnętrznej TO
Ł Miejscowość Miasto, miasto, wieś itp. nazwa San Francisco
Św Państwo Prowincja, region, hrabstwo lub stan. Nie należy tego skracać (np. West Sussex, Normandy, New Jersey). Kalifornia
C Kraj Dwuliterowy kod ISO kraju, w którym znajduje się Twoja organizacja NAS
E-MAIL Adres e-mail Osoba kontaktowa w organizacji, zwykle administrator certyfikatu lub dział IT

Jeśli żądanie zakończy się pomyślnie, urząd certyfikacji odeśle z powrotem certyfikat tożsamości podpisany cyfrowo przy użyciu klucza prywatnego urzędu certyfikacji.

Struktura CSR PKCS #10

Żądanie certyfikacji w formacie PKCS #10 składa się z trzech głównych części: informacji o żądaniu certyfikacji, identyfikatora algorytmu podpisu oraz podpisu cyfrowego w informacjach dotyczących żądania certyfikacji. Pierwsza część zawiera istotne informacje, w tym klucz publiczny. Podpis żądającego uniemożliwia podmiotowi zażądanie fałszywego certyfikatu klucza publicznego innej osoby. Tak więc klucz prywatny jest potrzebny do wygenerowania CSR PKCS #10, ale nie jest częścią CSR.

CSR dla certyfikatów dowodu osobistego i certyfikatów podpisu musi zawierać adres e-mail posiadacza dowodu osobistego lub nazwę organizacji w przypadku identyfikatora biznesowego.

Pierwsza część, typ ASN.1 CertificationRequestInfo , składa się z numeru wersji (który wynosi 0 dla wszystkich znanych wersji, 1.0, 1.5 i 1.7 specyfikacji), nazwy podmiotu, klucza publicznego (identyfikator algorytmu + ciąg bitów), oraz zbiór atrybutów dostarczających dodatkowych informacji o przedmiocie certyfikatu. Atrybuty mogą zawierać wymagane rozszerzenia certyfikatu, hasło wezwania do ograniczenia unieważnień, a także wszelkie dodatkowe informacje o przedmiocie certyfikatu, w tym prawdopodobnie typy lokalne lub przyszłe.

Przykład CSR PKCS #10

Standard PKCS#10 definiuje binarny format kodowania CSR do użytku z X.509 . Jest wyrażona w ASN.1 . Oto przykład, w jaki sposób można zbadać jego strukturę ASN.1 za pomocą OpenSSL :

 openssl asn1parse -i -w  twoim_żądaniu 

CSR może być reprezentowany jako PKCS#10 zakodowany w Base64 ; którego przykład podano poniżej:

----BEGIN CERTIFICATE REQUEST-----
MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYD
VQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAW
BgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25l
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP/U8RlcCD6E8AL
PT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOpB/
kieG83HsSmZZtR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y
/ArIuM+FBeuno/IV8zvwAe/VRa8i0QjFXT9vBBp35aeatdnJ2ds50yKCsHHcjvtr
9/8zPVqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV+fNHNQ0o/rzP//Pl3i7vvaEG
7Ff8tQhEwR9nJUR1T6Z7ln7S6cOr23YozgWVkEJ/dSr6LAopb+cZ88FzW5NszU6i
57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbEmYDR
SspR9xOCoOwYfamB+2Bpmt82R01zJ/kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5Xfl
sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy
/YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4/DILxMVqR9xqK1s98d6Ob/+
3wHFK+S7BRWrJQXcM8veAexXuk9lHQ+FgGfD0eSYGz0kyP26Qa2pLTwumjt+nBPl
rfJxaLHwTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C+7
----END CERTIFICATE REQUEST-----

Struktura ASN.1 powyższego żądania podpisania certyfikatu (przeanalizowana przez openssl) wygląda następująco, gdzie pierwsza liczba to przesunięcie bajtu, d=głębokość, hl=długość nagłówka bieżącego typu, l=długość treści:

0:d=0 hl=4 l= 716 przeciw: SEKWENCJA 4:d=1 hl=4 l= 436 przeciw: SEKWENCJA 8:d=2 hl=2 l= 1 prim: INTEGER :00 11:d=2 hl =3 l= 134 przeciw: SEKWENCJA 14:d=3 hl=2 l= 11 przeciw: SET 16:d=4 hl=2 l= 9 przeciw: SEKWENCJA 18:d=5 hl=2 l= 3 prim: OBIEKT :nazwakraju 23:d=5 hl=2 l= 2 prim: PRINTABLESTRING :EN 27:d=3 hl=2 l= 13 cons: SET 29:d=4 hl=2 l= 11 cons: SEKWENCJA 31:d= 5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 36:d=5 hl=2 l= 4 prim: UTF8STRING :none 42:d=3 hl=2 l= 13 cons: SET 44:d=4 hl=2 l= 11 przeciw: SEKWENCJA 46:d=5 hl=2 l= 3 prim: OBIEKT :lokalizacjaNazwa 51:d=5 hl=2 l= 4 prim: UTF8STRING :brak 57:d=3 hl=2 l= 18 przeciw : SET 59:d=4 hl=2 l= 16 cons: SEKWENCJA 61:d=5 hl=2 l= 3 prim: OBJECT :organizationName 66:d=5 hl=2 l= 9 prim: UTF8STRING :Wikipedia 77: d=3 hl=2 l= 13 cons: SET 79:d=4 hl=2 l= 11 cons: SEKWENCJA 81:d=5 hl=2 l= 3 prim: OBIEKT :organizationalUnitName 86:d=5 hl=2 l= 4 prim: UTF8STRING :none 92:d=3 hl=2 l= 24 cons: SET 94:d=4 hl=2 l= 22 cons: SEKWENCJA 96:d=5 hl=2 l= 3 prim: OBIEKT :commonName 101:d=5 hl=2 l= 15 prim: UTF8STRING :*.wikipedia.org 118:d=3 hl=2 l= 28 cons: SET 120:d=4 hl=2 l= 26 cons: SEKWENCJA SEKWENCJA 152:d=3 hl=2 l= 13 cons: SEKWENCJA 154:d=4 hl=2 l= 9 prim: OBIEKT :rsaEncryption 165:d=4 hl=2 l= 0 prim: NULL 167:d=3 hl =4 l= 271 prim: BIT STRING 442:d=2 hl=2 l= 0 cons: cont [ 0 ] 444:d=1 hl=2 l= 13 cons: SEKWENCJA 446:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption 457:d=2 hl=2 l= 0 prim: NULL 459:d=1 hl=4 l= 257 prim: ŁAŃCUCH BITÓW

Zostało to wygenerowane przez podanie kodowania base64 do polecenia openssl asn1parse -in your_request -inform PEM -i, gdzie PEM oznacza Privacy-Enhanced Mail i opisuje kodowanie ASN.1 Distinguished Encoding Rules w base64.

Zobacz też