Testuję funkcję unieważnienia certyfikatu urządzenia CMTS. To wymaga ode mnie skonfigurowania respondera OCSP. Ponieważ będzie on używany tylko do testowania, zakładam, że minimalna implementacja zapewniana przez OpenSSL powinna wystarczyć.
Wyodrębniłem certyfikat z modemu kablowego, skopiowałem go na komputer i przekonwertowałem na format PEM. Teraz chcę zarejestrować go w bazie danych OpenSSL OCSP i uruchomić serwer.
Wykonałem wszystkie te kroki, ale kiedy wysyłam żądanie klienta, mój serwer niezmiennie odpowiada komunikatem „nieznane”. Wygląda na to, że jest całkowicie nieświadomy istnienia mojego certyfikatu.
Byłbym bardzo wdzięczny, gdyby ktoś chciał rzucić okiem na mój kod. Dla Twojej wygody utworzyłem pojedynczy skrypt składający się z sekwencyjnej listy wszystkich używanych poleceń, od konfiguracji urzędu certyfikacji do uruchomienia serwera: http://code.google.com/p/stacked-crooked/source/browse/ trunk / Misc / OpenSSL / AllCommands.sh
Możesz również znaleźć niestandardowy plik konfiguracyjny i certyfikat, z którym testuję : http://code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
Każda pomoc byłaby bardzo mile widziana.
Odpowiedzi:
Jeśli jesteś zainteresowany: oto moje rozwiązanie.
Najpierw porzuciłem odpowiedź OCSP OpenSSL. Nie można go używać w przypadku certyfikatów, które nie zostały utworzone za pomocą podpisanego przez siebie urzędu certyfikacji.
Następnie użyłem bibliotek OpenCA, aby utworzyć narzędzie wiersza poleceń, które jest w stanie utworzyć odpowiedź OCSP z żądania OSCP. Działa całkowicie w oparciu o pliki: uruchamiasz go z żądaniem OSCP w formacie DER jako plik wejściowy i generuje plik odpowiedzi OCSP w formacie DER.
Drugim argumentem narzędzia wiersza poleceń jest status odwołania: dobry, odwołany lub nieznany. Status certyfikatu w pliku odpowiedzi będzie taki sam jak przekazany argument. Kod oparty jest na tym przykładzie , na który zwrócił mi uwagę The Rook w tym poście .
Ostatnim krokiem było stworzenie serwera HTTP opartego na narzędziu wiersza poleceń. Użyłem do tego frameworka Ruby's Merb. Sprytną cechą jest to, że status odwołania można zażądać jako adres URL HTTP, na przykład: http://127.0.0.1:5000/good .
Aktualizacja
Ponieważ powyższe linki są zepsute, opublikuję tutaj treść skryptu:
AllCommands.sh:
openssl.cnf:
Thirdparty.pem:
Narzędzie wiersza poleceń korzystające z bibliotek OpenCA jest napisane w C:
źródło