Как я могу предотвратить необходимость повторной подписи моего кода каждые 1 или 2 года? - PullRequest
11 голосов
/ 27 мая 2009

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

Если вы подписали код без использования службы отметок времени, после истечения срока действия сертификата ваш код больше не будет доверенным, и в зависимости от настроек безопасности его запуск может быть запрещен. Вам нужно будет переподписывать весь свой код новым сертификатом или новым сертификатом каждые 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"

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

Get-AuthenticodeSignature MyFile.ps1 | fl *

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

Ответы [ 3 ]

9 голосов
/ 27 мая 2009

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

8 голосов
/ 28 мая 2009

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

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

0 голосов
/ 30 апреля 2013

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

...