Dodawanie alternatywnych nazw podmiotów (SAN) do istniejącego żądania podpisania certyfikatu (CSR)

9

Czy ktoś może mi powiedzieć, w jaki sposób mogę dodać kilka alternatywnych nazw podmiotów do istniejącego raportu bezpieczeństwa chemicznego?

Nie mówię o generowaniu CSR z SAN ani dodawaniu SAN w momencie podpisywania - wiem, jak zrobić obie te rzeczy.

Tło: Mamy problem z tym, że obudowa HP typu blade pozwala generować CSR, ale pozwala tylko na jedną sieć SAN. Nie możemy użyć CSR wygenerowanego gdzie indziej, ponieważ nie mogliśmy użyć wynikowego certyfikatu, ponieważ nie ma (jak mogę znaleźć) sposobu na przesłanie klucza do podwozia kasetowego.

Standardowy proces naszego CA nie pozwala na dodawanie SAN-ów, czas podpisywania. Są gotowi eksperymentować, jednak staram się znaleźć rozwiązanie na naszym końcu, ponieważ będzie to oznaczać, że nie będziemy musieli polegać na tym, że mają dla nas niestandardowy proces - z mojego doświadczenia, jeśli będą musieli zastosować niestandardowy proces życie w końcu stanie się trudne. Np. Gdy członek personelu, który zna niestandardowy proces, nie jest obecny z powodu urlopu itp.

Obecną metodą jest połączenie się z administratorem pokładowym Bladechassis za pośrednictwem interfejsu GUI i wygenerowanie CSR za pomocą jednego CN.

GUI sieciowe pozwala tylko na jedną SAN w CSR.

Następnie podpiszemy go w następujący sposób w konfiguracji openssl:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

Wynikowy cert ma dodatkowe sieci SAN.

Jason Tan
źródło
Jak obecnie generujesz certyfikaty na obudowie typu blade? Jakiej metody używasz do połączenia itp. Jaki model podwozia typu blade?
Eli
Podwozie to c7000. Tak, obecnie tworzymy CSR na podwoziu i dodajemy SAN w czasie podpisywania, ale dotyczy to certyfikatów z podpisem własnym.
Jason Tan
Jakiej metody używasz do łączenia się z nią obecnie i jaki jest Twój proces generowania certyfikatów?
Eli
Zredagowałem główne pytanie, aby uwzględnić bieżącą metodę.
Jason Tan
1
Czy możesz zaimportować certyfikat i klucz prywatny, jeśli wygenerujesz go na innym komputerze i wyeksportujesz?
Clint

Odpowiedzi:

15

Jeśli twoje podwozie nie obsługuje dodawania sieci SAN, musisz wyciągnąć klucz z podwozia i wygenerować CSR z openssl.

Upewnij się, że req_extensions = v3_reqw [ req ]sekcji nie ma komentarza .

Dodaj subjectAltNamedo [ v3_req ]sekcji.

Wygeneruj nowy CSR.

openssl req -new -key extracted_c7000.key -out your_new.csr

Nie możesz edytować istniejącego CSR.

Cakemox
źródło
Co powiedział Cakemox. Jeśli mógłbyś edytować certyfikat (tj. Podpisany CSR) po jego podpisaniu, to zniweczyłoby to cały cel organów certyfikujących.
MadHatter
Nie chcę edytować CSR po podpisaniu - to, jak mówisz, pokonanie poczwarki. Chcę edytować raport CSR po jego wygenerowaniu, ale PRZED podpisaniem. Zdecydowanie można edytować części CSR przed podpisaniem przy użyciu openssl.
Jason Tan
Gdybym mógł pobrać klucz, zrobiłbym to. Niestety nie wspomniałem o tym w pierwotnym pytaniu, ale nie udało mi się znaleźć klucza do pobrania. Równie chętnie zapłacę nagrodę komuś, kto może mi powiedzieć, jak pobrać klucz.
Jason Tan,
FYI - Zdecydowanie można edytować części CSR przed podpisaniem przy użyciu openssl, w szczególności opcji „openssl req -subj”. Nie będzie to jednak, o ile mogę powiedzieć, dodanie rozszerzenia SAN v3, pozwoli jedynie określić nowy wiersz tematu, w tym dodatkowe CN.
Jason Tan
2
CSR jest podpisany przez klucz prywatny komputera, więc nie możesz go edytować po wygenerowaniu (w przeciwnym razie nie będzie już podpisany). Możliwe jest jednak, że urząd certyfikacji edytuje pola podane w certyfikacie publicznym; jest to jedyny sposób na zmianę pola SAN (nad którym nie masz kontroli, jeśli wysyłasz to do publicznego urzędu certyfikacji).
Chris S
0

Ważna uwaga: wszystko to jest nieco spekulacyjne, więc jeśli jesteś głęboko w kodzie i nie zgadza się z tym, co mówię, uwierz w kod. Nie jestem ekspertem od CA, po prostu gram w telewizji. To mówi:

Jako cecha CSR będzie to trudne. Ostatnim krokiem w programowym generowaniu CSR jest haszowanie wszystkiego, co stworzyłeś, a następnie podpisanie go za pomocą klucza prywatnego. Tak więc, chociaż możesz dodać te atrybuty do tekstu CSR, podpis nie będzie pasował do treści, więc żaden urząd certyfikacji nie podpisze go.

W twoim przypadku jednak kontrolujesz (lub przynajmniej masz kontakt) z CA. To daje dwie opcje:

  1. Możesz poinstruować urząd certyfikacji, aby bezczelnie zignorował podpis na CSR i wydał certyfikat.
  2. Możesz poprosić CA o wystawienie innego certyfikatu niż wymagany (np. Poprzez dodanie atrybutów).

Spośród nich numer 1 wydaje się najłatwiejszy. Aby to zrobić, musisz złamać pieczęć widoczną na manipulacjach na OpenSSL, ale ma ona kilka funkcji, które powinny znacznie ułatwić. Zacznę od asn1parse, który pokaże ci, jak rozdzielić CSR.

BMDan
źródło
W dalszych badaniach opcja nr 2 jest w rzeczywistości dość prosta i wykonywana przez wiele urzędów certyfikacji (np. W celu dodania site.comdo www.site.comcertyfikatu jako SAN).
BMDan
0

Podczas gdy odpowiedź cakemox jest zdecydowanie najłatwiejsza, jeśli możesz w jakiś sposób uzyskać kopię klucza prywatnego, istnieje inny sposób, jeśli nie możesz, poprzez ponowne podpisanie CSR przy użyciu certyfikatu „Agent rejestracji”.

Ten post na blogu css-security.com zawiera wszystkie szczegółowe informacje. Ale ogólny przegląd procesu wygląda następująco:

  • Zdobądź certyfikat agenta rejestracji
  • Zmodyfikuj szablon certyfikatu SSL, aby wymagał certyfikatu EA do wystawienia
  • Uzyskaj CSR, który potrzebuje informacji SAN
  • Użyj certyfikatu EA, aby zrezygnować z CSR podczas dodawania informacji SAN

Kiedy próbowałem tego osobiście, jestem prawie pewien, że pominąłem część dotyczącą modyfikacji szablonu certyfikatu. Zakładając, że możesz wygenerować dla siebie certyfikat Agenta rekrutacyjnego, faktyczny proces wygląda mniej więcej tak.

Utwórz plik san.inf z informacjami o rozszerzeniu SAN

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

Ponownie podpisz prośbę

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

Prześlij poprawione żądanie

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

Następnie postępuj normalnie z procesem wydawania.

Ryan Bolger
źródło