Chciałbym skonfigurować własny obiekt odpowiadający OCSP (tylko do celów testowych). Wymaga to posiadania certyfikatu głównego i kilku certyfikatów z niego wygenerowanych.
Udało mi się utworzyć samopodpisany certyfikat za pomocą openssl. Chcę go użyć jako certyfikatu głównego. Następnym krokiem byłoby utworzenie pochodnych certyfikatów. Nie mogę jednak znaleźć dokumentacji, jak to zrobić. Czy ktoś wie, gdzie mogę znaleźć te informacje?
Edytuj
Z perspektywy czasu moje pytanie nie jest jeszcze w pełni wyczerpane. Aby wyjaśnić problem, przedstawię mój łańcuch certyfikatów w następujący sposób:
ROOT -> A -> B -> C -> ...
Obecnie jestem w stanie utworzyć certyfikaty ROOT i A, ale nie dowiedziałem się, jak zrobić dłuższy łańcuch.
Moje polecenie utworzenia certyfikatu głównego to:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
Certyfikat A jest tworzony w następujący sposób:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
To polecenie domyślnie zależy od certyfikatu głównego, dla którego znajduje wymagane informacje w pliku konfiguracyjnym openssl.
Certyfikat B musi jednak polegać tylko na A, który nie jest zarejestrowany w pliku konfiguracyjnym, więc poprzednie polecenie nie będzie tutaj działać.
Jakiego wiersza poleceń należy używać do tworzenia certyfikatów B i późniejszych?
Edytuj
Znalazłem odpowiedź w tym artykule . Za pomocą tych dwóch poleceń można utworzyć certyfikat B (łańcuch A -> B):
# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365
# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
Zmieniłem również plik openssl.cnf:
[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE
To podejście wydaje się działać dobrze.
źródło
Odpowiedzi:
Możesz użyć OpenSSL bezpośrednio.
Utwórz klucz prywatny ośrodka certyfikacji (jest to Twój najważniejszy klucz):
Utwórz samopodpisany certyfikat urzędu certyfikacji:
Wydaj certyfikat klienta, najpierw generując klucz, a następnie poproś (lub użyj jednego dostarczonego przez system zewnętrzny), a następnie podpisz certyfikat przy użyciu klucza prywatnego urzędu certyfikacji:
(Może być konieczne dodanie niektórych opcji, ponieważ korzystam z tych poleceń razem z moim plikiem openssl.conf. Najpierw może być konieczne skonfigurowanie własnego pliku .conf.)
źródło
openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key
, ale potrzebujedemoCA
katalogu i różnych urządzeń.Po utworzeniu urzędu certyfikacji można go użyć do podpisania:
Utwórz klucz:
Utwórz csr:
Podpisz to :
i tak dalej, zastępując * _A z * _B i
CA_certificate_you_created.crt
zcrt_A.crt
aCA_key_you_created.key
zkey_A.key
Twoja zmiana:
oznacza, że wystawione certyfikaty mogą służyć do podpisywania innych certyfikatów.
źródło
OpenSSL jest wyposażony w skrypt Perla „CA.pl”, który pomaga utworzyć samopodpisany główny certyfikat CA , wraz z pasującym kluczem prywatnym, a także kilka prostych plików i katalogów, które pomagają śledzić wszelkie przyszłe certyfikaty, które podpisujesz (inaczej problem ) z tym głównym urzędem certyfikacji. Pomaga także generować inne pary kluczy i żądania podpisania certyfikatów (CSR) oraz pomaga przetwarzać te CSR (to znaczy wystawiać dla nich certyfikaty) i więcej.
Należy pamiętać, że wiele produktów wymaga, aby certyfikaty CA zawierały określony atrybut oznaczający je jako certyfikaty CA, w przeciwnym razie nie będą akceptowane jako ważni sygnatariusze / wystawcy innych certyfikatów. Jeśli samopodpisany certyfikat, który utworzyłeś, nie zawiera tego atrybutu, możesz mieć problem z przekonaniem innego oprogramowania, aby traktowało je jak prawidłowy certyfikat głównego urzędu certyfikacji.
Jeśli dobrze pamiętam, składnia wygląda mniej więcej tak:
źródło
/usr/lib/ssl/misc/CA.pl
Znalazłem ten post: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-signed-certificate-for-a-https-node-js-server
To jest dla Node.JS, ale skrypt w tym repozytorium GitHub używa poleceń openSLL do utworzenia certyfikatu głównego urzędu certyfikacji i certyfikatu domeny.
Uruchom używając:
bash make-root-ca-and-certificates.sh 'example.com'
Lub dla localhost przy użyciu:
bash make-root-ca-and-certificates.sh 'localhost'
make-root-ca-and-certificates.sh
źródło