2011-02-19 12 views
11

Używam OpenSSL do weryfikacji certyfikatu serwera. Ponieważ OpenSSL jest wysyłany bez żadnych wbudowanych głównych CA, musimy dystrybuować certyfikat głównego CA sami z naszym oprogramowaniem (statycznie łączymy OpenSSL). Zazwyczaj sposobem na to jest rozpowszechnianie pliku certyfikatu w formacie PEM i wywoływanie SSL_CTX_load_verify_locations.C++/OpenSSL: Użyj głównego CA z bufora zamiast pliku (SSL_CTX_load_verify_locations)

Jednak ta funkcja pobiera ścieżkę do pliku/katalogu i odczytuje plik (pliki) certyfikatu głównego bezpośrednio z systemu plików. Naprawdę chcielibyśmy mieć możliwość zakodowania certyfikatu w naszym pliku binarnym zamiast zapisywania go w systemie plików.

Innymi słowy, chcielibyśmy mieć funkcję taką jak SSL_CTX_load_verify_locations, która pobiera X509 * zamiast ścieżki pliku.

Czy coś takiego istnieje? lub czy istnieje prosty sposób na zhackowanie tego razem? Nie możemy znaleźć wielu informacji na ten temat.

Dziękuję bardzo za wszelkie sugestie!

+0

Co uniemożliwia zapisanie twardego certyfikatu głównego na dysku przed wywołaniem SSL_CTX_load_verify_locations? –

+0

Nic nie stoi na przeszkodzie: jesteśmy jednak aplikacją zabezpieczającą i obawiamy się złośliwych zakłóceń. W szczególności, jeśli łatwo jest zlokalizować i zastąpić nasz plik certyfikatu głównego, możesz zablokować dowolne z naszych transakcji SSL. W razie potrzeby przejdziemy tę trasę, ale byłoby wspaniale móc skompilować certyfikat główny do samego binarnego. – DSII

+0

Nie ma większego bezpieczeństwa, aby mieć zainstalowany główny urząd certyfikacji na twardym dysku, niż przechowywać go w pliku. –

Odpowiedz

18

Funkcja SSL_CTX_get_cert_store() mogą być wykorzystane, aby uzyskać uchwyt do magazynu certyfikatów stosowanych do weryfikacji (X509_STORE *), a funkcja X509_STORE_add_cert() (w openssl/x509_vfy.h) mogą być następnie wykorzystane, aby dodać certyfikat bezpośrednio do tego magazynu certyfikatów.

+0

Idealny! Dziękuję Ci bardzo; to działa cudownie. Dokładnie to, czego szukałem. Dzięki! – DSII

Powiązane problemy