Как я могу предотвратить необходимость переподписывать Свой Код каждые 1 или 2 года?
-
06-09-2019 - |
Вопрос
Я читал Что происходит, когда срок действия сертификата подписи кода истекает - Переполнение стека и размышляю о более основательном ответе.Приведенный ответ был больше посвящен настройке вашего собственного центра сертификации.Даже с вашим собственным центром сертификации вам все равно придется иметь дело с истекающими сертификатами кода.
Если вы подписали код без использования службы временной отметки, по истечении срока действия сертификата вашему коду больше не будут доверять, и в зависимости от настроек безопасности ему может быть запрещено запускаться.Вам нужно будет повторно подписывать весь ваш код новым сертификатом или обновленным сертификатом каждые 1 или 2 года.
Доверенная (цифровая) временная метка позволяет цифровой подписи оставаться действительной даже после истечения срока действия самого сертификата.Вам нужно будет повторно подписать код новым сертификатом только в том случае, если вы внесли изменения.
Правильно ли все это звучит?Если это так, мне нужны рекомендации о том, какую службу временных меток использовать, предпочтительно от кого-то, кто действительно ею пользовался.Я также хотел бы знать, есть ли какие-либо внутренние решения, подобные тому, чтобы быть вашим собственным центром сертификации.
Прямо сейчас это относится к сценариям PowerShell, но в конечном итоге у меня возникнет та же проблема с другим кодом.
Обновить:Пример того, как подписать PS-скрипт меткой времени (вы можете создать скрипт для этого):
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"
Затем, чтобы увидеть Сертификат Подписывающего лица и сертификат временной метки, вы можете сделать это:
Get-AuthenticodeSignature MyFile.ps1 | fl *
Он предоставляет вам Тему (CN, OU и т.д.), Эмитента, даты до / После и отпечатки пальцев как для вашего сертификата, так и для сертификата с меткой времени.Вы также получите сообщение, указывающее на статус подписи.
Решение
Вам лучше выбрать одного из надежных поставщиков сертификатов (Verisign, Thawte, Comodo и т.д.).Это позволяет вам подписывать свое программное обеспечение без того, чтобы пользователь явно доверял вашему частному корневому центру сертификации.Мы использовали как Verisign, так и Thawte, Comodo и даже GoDaddy с отметками времени без каких-либо проблем с тем, что программное обеспечение становилось недействительным даже спустя годы после истечения срока действия сертификата.
Другие советы
Отметка времени - это бесплатная услуга. На самом деле только доверенный поставщик проверяет, что вы подписали файл в определенное время.Служба временных меток Verisign является стандартной.Последний пример в справке по Set-AuthenticodeSignature демонстрирует, как его использовать.
Ли Холмс [MSFT] Разработка Windows PowerShell Корпорация Microsoft
В конце концов, вы действительно не сможете избежать необходимости отказаться от кода.Преимущество запуска собственного центра сертификации заключается в том, что вы можете выбрать выдачу сертификатов подписи кода с более длительным сроком службы, чем по умолчанию, что позволит вам дольше ждать, прежде чем что-либо отменять.Недостатком, конечно, является необходимость иметь дело с другой службой или сервером (вашим центром сертификации).