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

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

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

Get-AuthenticodeSignature MyFile.ps1 | fl *

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


person Bratch    schedule 26.05.2009    source источник


Ответы (3)


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

person Paul Alexander    schedule 26.05.2009
comment
При использовании Verisign и Thawte у вас также есть временные метки? Без меток времени разве некоторые системы не будут жаловаться на истечение срока действия сертификата и не запускать ваш код? - person Bratch; 27.05.2009
comment
@Bratch: Да, вы должны использовать их сервер отметок времени. Мы никогда не публиковались без него, поэтому я не могу комментировать приложения без отметок времени. - person Paul Alexander; 27.05.2009
comment
Между прочим, Comodo - еще один предустановленный, глобально доверенный корневой провайдер, имеющий более дешевые сертификаты. Однако я не испортил время. - person Jaykul; 27.05.2009
comment
Конечно, если это для корпоративной работы и у вас есть собственная инфраструктура AD, ситуация несколько изменится, потому что вам, возможно, уже потребуется управлять своим собственным центром сертификации. Также обратите внимание, что если вы создаете свой собственный CA, вам все равно не нужно ограничиваться 1-2-летними периодами. - person Jaykul; 27.05.2009
comment
@Jaykul: Ага ... забыл об этом. Мы тоже успешно их использовали. Добавлю в ответ. - person Paul Alexander; 27.05.2009
comment
@Jaykul: Большая часть (не вся) нашей работы предназначена для корпоративной сети с нашим собственным AD и нашим собственным CA, но сертификаты все еще истекают. Вы хотите сказать, что с помощью нашего собственного центра сертификации я могу заставить администратора утверждать для меня сертификаты, срок действия которых истекает после того, как я выйду на пенсию? Или мы могли бы использовать что-то вроде 5 или 10 лет, что уменьшило бы частоту, с которой мне приходилось бы заново подписывать всю нашу кодовую базу. - person Bratch; 27.05.2009
comment
Даже в корпоративной работе я голосую за использование проверенного провайдера. У них уже есть инфраструктура и ноу-хау для управления хранилищем сертификатов, поэтому вам не о чем беспокоиться. Сертификаты сейчас намного дешевле, и стоимость сертификата будет намного меньше, чем затраты на кого-то в штате для управления им. - person Paul Alexander; 28.05.2009

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

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

person LeeHolmes    schedule 27.05.2009
comment
Да, вот он, в примере 3, параметр -TimeStampServer. Теперь все, что мне нужно сделать, это выбрать один и выяснить, могу ли я использовать его с внутренним центром сертификации. Возможно, мне придется сделать то, что предложил Пол Александер выше, и получить внешний. По крайней мере, так я знаю, что служба отметок времени будет работать с моим сертификатом. - person Bratch; 28.05.2009

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

person static    schedule 30.04.2013