Как я могу предотвратить повторное подписание моего кода каждые 1 или 2 года?

Я читал Что происходит, когда срок действия сертификата подписи кода истекает - Stack Overflow и задается вопросом о более надежном ответе. Ответ был больше связан с настройкой собственного СА. Даже с вашим собственным центром сертификации вам все равно придется иметь дело с истекающими сертификатами кода.

Если вы подписали код без использования службы штамповки времени, после истечения срока действия сертификата ваш код больше не будет доверен, и в зависимости от настроек безопасности его нельзя будет запускать. Вам нужно будет переписать весь свой код с новым сертификатом или с обновленным сертификатом каждые 1 или 2 года.

Надежная (цифровая) временная привязка позволяет использовать цифровую подпись даже после того, как истек срок действия сертификата. Вам нужно будет переписать код с новым сертификатом, только если вы внесли изменения.

Все это звучит правильно? Если это так, мне нужны рекомендации о том, какой сервис timestamping использовать, желательно от того, кто его использовал. Я также хотел бы знать, есть ли какие-либо внутренние решения, похожие на собственные CA.

В настоящее время это относится к сценариям PowerShell, но в конечном итоге у меня будет такая же проблема с другим кодом.

Обновить: пример того, как подписать PS script с меткой времени (для этого вы можете сделать script):

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"

Затем, чтобы увидеть сертификат подписчика и сертификат TimeStamper, вы можете сделать это:

Get-AuthenticodeSignature MyFile.ps1 | fl *

Он предоставляет вам тему (CN, OU и т.д.), Эмитент, До/После Даты и Отпечатки для вашего сертификата и сертификата timestamper. Вы также получите сообщение о статусе подписи.

Ответ 1

Вам лучше выбрать одного из доверенных поставщиков сертификатов (Verisign, Thawte, Comodo и т.д.). Это позволяет вам подписывать ваше программное обеспечение без прямого доступа к вашему частному корневому ЦС. Мы использовали как Verisign, так и Thawte, Comodo даже GoDaddy с отметкой времени без каких-либо проблем, когда программное обеспечение становится недействительным даже спустя годы после истечения срока действия сертификата.

Ответ 2

Штамп времени - это бесплатный сервис - это действительно только доверенный поставщик, который проверяет, что вы подписали файл в данный момент. Служба отметки времени Verisign является стандартной. Последний пример справки для Set-AuthenticodeSignature демонстрирует, как его использовать.

Ли Холмс [MSFT] Разработка Windows PowerShell Корпорация Microsoft

Ответ 3

В конце концов вы не можете избежать необходимости сбрасывать код. Преимущество запуска вашего собственного центра сертификации заключается в том, что вы можете выбрать выпуск сертификатов подписи кода с более длительным сроком службы, чем по умолчанию, что позволит вам подождать дольше, прежде чем уйти в отставку. Недостатком, конечно же, является наличие другого сервиса или сервера (вашего ЦС).