Czytałem What happens when a code signing certificate expires - Stack Overflow i zastanawiałem się nad bardziej solidną odpowiedzią. Podana odpowiedź dotyczyła raczej konfiguracji własnego urzędu certyfikacji. Nawet w przypadku własnego urzędu certyfikacji nadal będziesz musiał postępować z wygasającymi certyfikatami kodów.Jak mogę zapobiec konieczności ponownego podpisywania mojego kodu Co 1 lub 2 lata?
Jeśli podpisałeś kod bez korzystania z usługi znakowania czasem, po wygaśnięciu certyfikatu twój kod nie będzie już zaufany, a w zależności od ustawień bezpieczeństwa może nie zostać uruchomiony. Konieczne będzie ponowne podpisanie całego kodu za pomocą nowego certyfikatu lub odnowionego certyfikatu co 1 lub 2 lata.
Zaufany (cyfrowy) znacznik czasu umożliwia podpis cyfrowy, nawet jeśli sam certyfikat utracił ważność. Konieczne będzie ponowne podpisanie kodu z nowym certyfikatem tylko po wprowadzeniu zmian.
Czy to wszystko brzmi poprawnie? Jeśli tak, potrzebuję zaleceń dotyczących tego, z jakiej usługi znacznika czasu należy korzystać, najlepiej od kogoś, kto faktycznie go użył. Chciałbym również wiedzieć, czy są jakieś wewnętrzne rozwiązania, podobne do tego, że są twoimi własnymi CA.
W tej chwili dotyczy to skryptów PowerShell, ale w końcu będę mieć ten sam problem z innym kodem.
Aktualizacja: Przykładowy sposób do podpisania skryptu PS ze znacznikiem czasu (można zrobić skrypt do tego):
Set-AuthenticodeSignature -filepath "D:\Projects\A Sample\MyFile.ps1"
-cert gci cert:\CurrentUser\My -codesigning
| where -Filter {$_.FriendlyName -eq "Thawte Code Signing"}
-IncludeChain All
-TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"
Następnie aby zobaczyć podpisujący certyfikat i TimeStamper certyfikat, można zrobić to:
Get-AuthenticodeSignature MyFile.ps1 | fl *
daje Subject (CN, OU, etc.), Emitent, przed/po terminie, a Thumbprints zarówno dla Twojego cert i cert na timestamper użytkownika. Otrzymasz również komunikat informujący o statusie podpisu.
+1: Ogólny pomysł: użyj zaufanego dostawcy na całym świecie. –
Czy Verisign i Thawte mają również znacznik czasu? Bez sygnatury czasowej niektóre systemy nie będą narzekały na to, że certyfikat wygasł i nie uruchamiają twojego kodu? – Bratch
@Bratch: Tak, musisz użyć ich serwera znacznika czasu. Nigdy nie opublikowaliśmy bez niego, więc nie mogę komentować aplikacji nieobciążonych czasowo. –