2011-01-17 16 views
8

Mam aplikację Windows C++. Podpisuję nasz instalator i mój plik wykonywalny, ale obecnie nie podpisuję plików DLL (takich jak zlib1.dll). Podpisywanie ich również nie jest wielką sprawą, ale czy ktoś może wyjaśnić, na czym polega korzyść? Na przykład, czy mój program będzie wyglądał inaczej niż oprogramowanie AV lub zapora ogniowa, jeśli wszystkie jego zależności są podpisane? Czy użytkownicy otrzymają inne ostrzeżenia?Czy mogę podpisać moje pliki DLL?

+0

Dlaczego ich nie podpisać? Zapłaciłeś już za certyfikat - więc podpisanie ich zajmuje tylko kilka sekund w trakcie kompilacji. Dlaczego go pominąć? – Tim

+1

Tim, prawdopodobnie i tak to zrobię, jestem tylko ciekawy, jaki jest efekt. – twk

Odpowiedz

6

Twój program nie będzie wyglądać inaczej niż AV lub zapora. Sprawdzą podpisy na twoim pliku wykonywalnym, który już podpisałeś. Podpisanie plików dll ma sens, gdy sam weryfikujesz te podpisy przed ich załadowaniem. Zapewnia to integralność wszystkich bibliotek dll w czasie wykonywania. Zalecaną bezpieczną praktyką jest podpisywanie wszystkich plików binarnych, które wysyłasz i sprawdzaj ich podpisy w czasie wykonywania. Jeśli twoje biblioteki dll mają być używane przez inne produkty, musisz je podpisać, ponieważ te produkty będą chciały zweryfikować ich autentyczność i integralność.

+5

A co z niejawnym łączeniem? Czy istnieje sposób weryfikacji podpisu w tym ustawieniu, czy też konieczne jest przekonwertowanie wszystkich ładunków DLL na jawne łączenie (tj. Wywołania LoadLibraryEx)? –

+1

Świetne pytanie, Brent. Chciałbym znać odpowiedź. – twk

+1

Nie sądzę, że możliwe jest weryfikowanie podpisów dla niejawnie połączonych bibliotek dll, ponieważ biblioteki DLL zostaną załadowane przed uruchomieniem twojego kodu. Jednak znam jeden produkt, który jawnie ładuje biblioteki DLL, do których niejawnie łączy się tylko w celu zweryfikowania podpisu . – 341008

Powiązane problemy