2013-05-20 18 views
7

Brakuje mi czegoś podstawowego i oczywistego w podpisywaniu CSR klienta poleceniem openssl.Jak podpisać CSR klienta za pomocą openssl?

Mam (symulowane) dwie organizacje, jedna to organizacja urzędu certyfikacji (istnieje w Kalifornii), a druga to organizacja klienta, która jest w stanie WA.

Utworzyłem urząd certyfikacji w systemie Linux za pomocą komendy openssl, wykonując następujące kroki. http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

Mam dwa pliki teraz 1. cakey.pem zawierający prywatny klucz CA. Ta prywatna jest również powiązana z hasłem. 2. cacert.pem zawierający samopodpisany certyfikat CA

Następnie chcę podpisać wszystkie raporty CSR od klientów. Klient ze stanu Waszyngton wysyła mi plik client-csr.pem. Czytam tę stronę podręcznika o podpisywaniu CSR i przykładów na końcu. http://www.openssl.org/docs/apps/ca.html

Polecenie, które próbuję, a komunikat o błędzie wygląda następująco: uruchamiam te polecenia w systemie CA, w tym samym systemie, w którym utworzyłem plik cookie.pem (klucz prywatny CA) i cacert.pem (CA's autopodpisywany certyfikat)

$ openssl ca -in demoCA/csrs/client-csr.pem -out client-cert.pem 
Using configuration from /usr/lib/ssl/openssl.cnf 
Enter pass phrase for ./demoCA/private/cakey.pem: 
Check that the request matches the signature 
Signature ok 
The stateOrProvinceName field needed to be the same in the 
CA certificate (California) and the request (WA) 

pytanie brzmi, dlaczego nazwa państwo musi być taka sama dla obu CA-świadectwa, a klient-CSR.

klient nie jest w „Kalifornii”, a więc podczas tworzenia CSR, umieszczają własną nazwę stanu (WA). Jako instytucja certyfikująca zweryfikowałem, że klient rzeczywiście jest w WA, a plik CSR rzeczywiście pochodził z im. Chcę podpisać ten raport bezpieczeństwa i zwrócić certyfikat klientowi.

+0

Proszę sprawdzić swój plik konfiguracyjny. To musi być egzekwowane przez konfigurację, a nie przez OpenSSL i X.509. – doptimusprime

Odpowiedz

6

Rozwiązany. Dzięki dbasic.

W systemie CA, w którym odbywa się operacja podpisywania, zrób kopię pliku /etc/ssl/openssl.conf i zmodyfikuj go i utwórz nowy plik konfiguracyjny. Użyj tej zmodyfikowanej kopii podczas podpisywania.

cp /etc/ssl/openssl.cnf ./openssl-for-signing-csrs.cnf 

I zmień "countryName", stateOrProvinceName lub "organizationName" na "dostarczone". Oznacza to, że certyfikat powinien wykorzystywać wartości z raportów CSR i nie próbować dopasować się do certyfikatu (jeden z nich próbowałby "dopasować" tylko do samodzielnego podpisywania, domyślnie został napisany plik openssl.cnf do samodzielnego podpisania i nie dla CA)

80,82c80,82 
< countryName   = match 
< stateOrProvinceName = match 
< organizationName  = match 
--- 
> countryName   = supplied 
> stateOrProvinceName = supplied 
> organizationName  = supplied 
Powiązane problemy