2012-03-02 16 views
5

Aktualnie generuję program instalacyjny wykorzystujący NSIS na komputerze z systemem Linux. Pliki binarne NSIS zostały skompilowane dla Ubuntu, a użycie skryptu .nsi nie stanowi problemu. Jednak wynikowy plik setup.exe jest niepodpisany. Powoduje to przerażające ostrzeżenia dla naszych użytkowników, którzy pobierają instalator za pośrednictwem większości popularnych przeglądarek internetowych, a także ostrzeżeń z samego systemu Windows po uruchomieniu.Zarejestruj instalator NSIS na Linux box

Chcielibyśmy uniknąć tych ostrzeżeń, a jeśli czegoś nie brakuje, wymaga to użycia narzędzia Windows do podpisania wygenerowanego pliku setup.exe. Czy jest to możliwe na komputerze z systemem innym niż Windows?

Niestety, każdy instalator jest unikalny (różne pliki są pakowane w zależności od żądania klienta i unikalny identyfikator), więc nie mogę podpisać instalatora na komputerze z systemem Windows, a następnie przesłać go.

Odpowiedz

1

Musiałem to zrobić kilka tygodni temu, bez użycia wina. To, co zrobiłem, to zaimportować plik pfx do systemu Windows, a następnie wyeksportować go za pomocą opcji "Uwzględnij wszystkie certyfikaty w ścieżce certyfikatu, jeśli to możliwe". następnie postępowałem zgodnie z instrukcjami na this page.

Po masz wszystkie certs (SPC i pliki PVK) należy użyć następującego polecenia:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

musiałem zainstalować pakiet mono-dev:

sudo apt-get install mono-devel 
+0

OpenSSL zgłasza, że ​​'-pvk-strong' jest nieznaną opcją. Próbowałem go pominąć, ale napotkałem błąd podczas uruchamiania 'signcode'; prosi o podanie hasła. Zakładam, że byłby to ten sam, który użyłem podczas eksportowania certyfikatu z systemu Windows, ale to nie działa. Gdzie zbłądziłem? –

+0

Okazuje się, że pobieranie najnowszej wersji OpenSSL i budowanie go pozbył się tego błędu. Nie wiem, dlaczego Ubuntu nie ma tego w apt. :( –

+0

@Tom G: ponieważ starają się utrzymywać rzeczy stabilne, co więcej, w kanale dystrybucji LTS, Debian jest jeszcze bardziej konserwatywny. – 0xC0000022L

0

Podpisywanie plików dla systemu Windows korzysta z podpisów Microsoft Authenticode. W zestawie SDK znajduje się narzędzie, które sygnalizuje pliki wykonywalne i biblioteki DLL (signtool.exe). Możesz uruchomić to przy użyciu Wine.

Możliwe jest również podpisywanie plików za pomocą wywołań interfejsu Windows API - te funkcje mogą być implementowane również w Wine, ale wątpię w to, ponieważ Authenticode jest używany i implementowany przez Microsoft (o ile wiem).

Jednak to narzędzie nie za bardzo - w zasadzie dołącza certyfikat i podpisany znacznik czasu na końcu pliku. Mogą istnieć również adaptacje dla systemu Linux.

Oto link dla kogoś, kto ma to działa przy użyciu kodu.

6

Twój najlepszy wybór to prawdopodobnie użycie: osslsigncode. Zbudowany z łatwością dla mnie (upewnij się, że dostępne są nagłówki OpenSSL). Może mieć jednak problemy z zasadami podpisywania w trybie jądra (osadzanie certyfikatów nadrzędnych aż do katalogu głównego), więc możesz w końcu nadal korzystać z WINE.

+1

osslsigncode pracował dla mnie. Teraz jestem w stanie podpisać exes za pomocą pfx, dziękuję. –