Jak poprawnie skonfigurować opensl CA w celu wygenerowania certyfikatów klienta ssl

9

Konfiguruję swój pierwszy urząd certyfikacji. Jego celem będzie wydawanie certyfikatów naszym klientom, którzy będą ich używać do uzyskiwania dostępu do naszej usługi EDI za pośrednictwem https. Muszę więc wygenerować certyfikaty klienta ssl. Cały proces podpisywania certyfikatów działa do tej pory, a certyfikaty można z powodzeniem wykorzystać do uzyskania dostępu do naszej usługi, ale martwię się o jedno:

Wygenerowane cele certyfikatu są sposobem na ogólne:

$ openssl x509 -purpose  -noout -in client.crt.pem
Certificate purposes:
SSL client : Yes
SSL client CA : No
SSL server : Yes
SSL server CA : No
Netscape SSL server : Yes
Netscape SSL server CA : No
S/MIME signing : Yes
S/MIME signing CA : No
S/MIME encryption : Yes
S/MIME encryption CA : No
CRL signing : Yes
CRL signing CA : No
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : No

Uważam, że w moim przypadku nie powinny istnieć inne cele niż klient SSL i podpisywanie S / MIME. Czy się mylę i tak powinno pozostać?

Jeśli mam rację i powinienem wyłączyć inne cele, co powinienem umieścić w mojej konfiguracji openssl.cnf?

Oto moja obecna konfiguracja (trochę rozebrana):

[ CA_edi ]
# here was directory setup and some other stuff, cut it for clarity
x509_extensions = usr_cert      # The extentions to add to the cert

name_opt    = ca_default        # Subject Name options
cert_opt    = ca_default        # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# stripped rest of config about validity days and such

[ usr_cert ]

basicConstraints=CA:FALSE
nsCertType = client, email
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, keyAgreement

Co robię źle, że wygenerowane certyfikaty pozwalają na użycie serwera?

SWilk
źródło
Przejrzyj „cert_opt = ca_default”, który wydaje się tworzyć przesłonięcie.
zedman9991
To wydaje się dobre pytanie, lata później i bez odpowiedzi?
Evan Carroll
Tak, brak odpowiedzi. Sam tego nie rozgryzłem. Ale nasz test beta EDI jest w toku i będę musiał go opracować w najbliższej przyszłości dla wersji produkcyjnej.
SWilk
Postarałem się jak najlepiej zadać pytanie poniżej, ale jeśli możesz dołączyć kopię pliku wyjściowego openssl x509 -text -nameopt multiline -certopt no_sigdump -certopt no_pubkey -noout -in one_of_your_client_certificates.pemi sekcję rozszerzeń z openssl.cnfpliku, zobaczę, czy mogę udzielić bardziej szczegółowych porad.
Calrion

Odpowiedzi:

4

Masz rację, że martwisz się o „podpisywanie listy CRL”, „dowolny cel CA” i „OCSP Helper”, są one zwykle zarezerwowane dla certyfikatów CA lub certyfikatów specjalnie wystawionych na potrzeby podpisywania list odwołania certyfikatów (CRL, lista certyfikatów, które są niepoprawny) lub z uruchomionym serwerem OCSP (podobnym do list CRL, ale usługa online zapewniająca status ważności certyfikatów).

Odpowiednia strona dokumentacji OpenSSL dotyczy komendy x509 i x509v3_config

Oto konfiguracja OpenSSL, której używam do generowania certyfikatów klientów:

[user]
basicConstraints = critical,CA:FALSE
extendedKeyUsage = clientAuth,emailProtection
subjectAltName=email:copy
crlDistributionPoints = URI:http://www.rgweb.org/ca/rgweb-ca.crl
authorityKeyIdentifier=keyid:always
authorityInfoAccess = caIssuers;URI:http://www.rgweb.org/ca/rgweb-ca.cer

Poprowadzę cię przez to linia po linii:

basicConstraintsJest ustawiony jako krytyczne, co oznacza „odrzucać ten certyfikat, jeśli nie rozumieją tego bitu” i określa, że świadectwo to nie Kalifornia . Nawet jeśli ktoś używa oprogramowania do wystawienia certyfikatu na podstawie tego certyfikatu, nigdy nie będzie on zaufany.

Rozszerzone użycie klucza nie jest konieczne, ale niektóre programy wymagają, aby były obecne i miały określony cel. Zawiera listę uwierzytelniania klienta (o czym mówisz), a także podpisywania i szyfrowania wiadomości e-mail S / MIME; możesz bezpiecznie usunąć cel S / MIME, jeśli go nie potrzebujesz.

subjectAltNamepozwala dołączyć informacje o temacie, których nie możesz podać w subjectpolu. Jest również używany w certyfikatach serwera WWW w celu uwzględnienia nazw domen, których certyfikat może być użyty dla domeny innej niż domena określona w atrybucie wspólnej nazwy podmiotu; certyfikaty te są nazywane certyfikatami SAN (podmiotowa nazwa alternatywna). Powszechną praktyką jest umieszczanie adresu e-mail subjectAltNamew temacie, a nie w temacie; w ogóle nie musisz podawać adresu e-mail i możesz pominąć rozszerzenie.

crlDistributionPointswymienia miejsca, w których dostępna jest CRL dla organu wydającego; informuje oprogramowanie, które próbuje sprawdzić poprawność certyfikatu, „tutaj można się dowiedzieć, czy ten certyfikat jest nadal ważny”. Do korzystania z Internetu http://prawdopodobnie najlepiej jest adres URL (listy CRL są podpisane cyfrowo, więc nie ma takiej potrzeby httpsi może to powodować problemy z pętlą zaufania).

authorityKeyIdentifierjest zwykle skrótem SHA-1 klucza publicznego wydającego urzędu certyfikacji (choć mogą to być inne wartości). Jeśli dodasz to rozszerzenie, wartość musi być zgodna z wartością subjectKeyIdentifierw wystawiającym certyfikacie urzędu certyfikacji .

authorityInfoAccessjest trochę podobny, crlDistributionPointsale określa, gdzie uzyskać wystawiający certyfikat CA, a nie CRL. Jest to przydatne, jeśli masz długi łańcuch zaufania: np. CA-1 wydaje CA-2, który wydaje CA-3, który wydaje certyfikat; oprogramowanie próbujące zweryfikować certyfikat może użyć tego rozszerzenia, aby uzyskać certyfikat CA-3, a następnie użyć wartości w tym certyfikacie, aby uzyskać certyfikat CA-2 itp. Zazwyczaj łańcuch certyfikatów (w tym przypadku certyfikat CA-2 oraz certyfikat CA-3) jest dołączany do certyfikatu podmiotu (np. w transakcji SSL lub wiadomości e-mail S / MIME). Nie znam żadnego oprogramowania korzystającego z tego rozszerzenia, ale nie wiem, czy nie jest ono powszechnie używane. Jest to zwykle zawarte w certyfikatach.

Wszystkim, że tylko naprawdę trzebabasicConstraints i extendedKeyUsage; podstawowe ograniczenia naprawdę, naprawdę muszą być krytyczne (lub właśnie rozdałeś certyfikaty CA!), a rozszerzone użycie klucza zasadniczo nie jest.

Calrion
źródło
Dziękuję za Twoją odpowiedź. Już straciłem nadzieję. Przeczytam go później i wrócę do ciebie tak szybko, jak to możliwe.
SWilk,