Что произойдет, когда истечет срок действия сертификата для подписи кода?

Я рассматриваю возможность приобретения сертификата подписи кода у VeriSign или Thawte для подписания XBAP. У меня такой вопрос: что произойдет, когда истечет срок действия этого сертификата? 299 и 599 долларов - довольно высокие цены для сертификатов сроком на 1 год / 2 года, и если мне придется доставить недавно подписанную сборку моим клиентам каждый раз, когда истечет срок действия моего сертификата, я просто разберусь с проблемой создания собственного сертификата для Теперь.

Что мне не нравится в создании собственного сертификата, так это сложность его распространения на все клиентские машины, которые будут использовать мой XBAP. Мое приложение будет использоваться только в локальной сети, поэтому я полагаю, что всегда могу использовать установщик Windows для установки собственного сертификата (хотя я не уверен, как это сделать - у кого-нибудь есть идеи?).

На самом деле это не было бы проблемой, если бы я доставлял приложение с частичным доверием, но моему приложению требуются веб-разрешения, поскольку оно будет взаимодействовать со службами WCF, поэтому оно находится в серой зоне между частичным доверием и полным доверием и без сертификат, я получаю забавное сообщение Trust Not Granted, когда пытаюсь загрузить свой XBAP.

Любые идеи?


person Rob    schedule 30.11.2008    source источник
comment
www.CACert.org - это некоммерческая организация, которая бесплатно предлагает сертификаты для подписи кода доверенным лицам.   -  person cjakeman    schedule 02.05.2009
comment
Сообщение FF: www.cacert.org использует недействительный сертификат безопасности. Сертификат не является доверенным, поскольку сертификат издателя неизвестен.   -  person HTTP 410    schedule 10.06.2009
comment
Используйте KSoftware. Стендап, существующий уже много лет, я знаю его лично. codeigning.ksoftware.net   -  person Nico Westerdale    schedule 07.01.2019
comment
Comodo довольно известен в индустрии. Они продают сертификаты подписи кода по цене 70,83 доллара в год. Он также был упомянутым ниже в BCran.   -  person Franklin Yu    schedule 28.04.2019


Ответы (8)


Что вам следует сделать, если вы планируете использовать его в закрытой (LAN) среде, так это настроить собственный центр сертификации. Версии Windows Server включают простой в использовании центр сертификации, но еще проще установить минимальный центр сертификации с помощью demoCA, предоставляемого openssl, состоящий из нескольких скриптов. Вы можете запустить openssl demoCA в Cygwin в Windows или изначально. Эта demoCA состоит из нескольких скриптов perl / bash, которые вызывают команды openssl для генерации запросов, подписания сертификатов / crls и т. Д.

Если у вас есть собственный ЦС, вам нужно установить корневой сертификат ЦС, поэтому проблем с обновлением пользовательских сертификатов больше не будет, поскольку сертификат ЦС останется прежним. Обычно сертификат ЦС должен длиться 5-10 лет, но вы можете настроить столько, сколько захотите (помните, что это ваш собственный ЦС).

Сертификат CA будет установлен на каждом клиентском компьютере. Если ваше приложение доверяет системе безопасности Windows, его следует установить в хранилище ключей центра сертификации IExplorer. Если вы используете приложение Java, вам следует распространить сертификат CA внутри используемого вами хранилища ключей Java.

person Fernando Miguélez    schedule 30.11.2008
comment
Спасибо, Фернандо - я немного запутался - как сертификат CA устанавливается на каждый клиентский компьютер? Это нужно делать вручную? - person Rob; 01.12.2008
comment
да. Самый прямой подход - сделать это вручную. Просто сохраните свой сертификат с расширением .cer или .der. Дважды щелкните по нему, и Windows представит вам мастер для его импорта. - person Fernando Miguélez; 01.12.2008
comment
Вся хорошая информация, но что произойдет, когда истечет срок действия сертификата для подписи кода? - person Bratch; 27.05.2009
comment
Легко, ваша подпись (код или что-то еще) больше недействительна, поскольку сертификат не проходит даже локальную проверку (дата истечения срока действия - одна из первых характеристик сертификата, которую нужно проверить) - person Fernando Miguélez; 27.05.2009
comment
Да, я обнаружил, что вам нужно использовать службу цифровых отметок времени, если вы не хотите повторно подписывать свой код каждые X лет. stackoverflow.com/questions/912955/ - person Bratch; 28.05.2009
comment
Итак, когда он истечет, вы не только не сможете подписать новый код, но и старый, уже подписанный код, также станет недействительным, верно? - person BrainSlugs83; 16.01.2014
comment
Во-вторых, можно ли просто продлить сертификат? - или вам нужно перестроить / подписать код и попросить людей установить новую версию вашего продукта? - person BrainSlugs83; 16.01.2014

Если вы отметьте время своим кодом, пока сертификат действителен, то ваши сертификаты с истекшим сроком действия будут действительны.

Из часто задаваемых вопросов о сертификатах для подписи кода Thawte:

Как долго я могу использовать сертификат подписи кода?

  • Сертификаты подписи кода действительны в течение 1 или 2 лет в зависимости от того, какой жизненный цикл вы выберете при покупке сертификата. Обратите внимание: для Microsoft® Authenticode® (многоцелевой) вам также следует поставить отметку времени для подписанного кода, чтобы избежать истечения срока действия кода по истечении срока действия сертификата.

Является ли код с отметкой времени действительным после истечения срока действия сертификата подписи кода?

  • Microsoft® Authenticode® (многоцелевой) позволяет добавлять отметку времени к подписанному коду. Отметка времени гарантирует, что срок действия кода не истечет, когда истечет срок действия сертификата, поскольку браузер проверяет отметку времени. Служба отметок времени предоставляется VeriSign. Если вы используете службу отметок времени при подписании кода, хэш вашего кода отправляется на сервер VeriSign для записи отметки времени для вашего кода. Программное обеспечение пользователя может различать код, подписанный сертификатом с истекшим сроком действия, которому нельзя доверять, и кодом, подписанным сертификатом, действительным на момент подписания кода, но впоследствии истекшим.
person Martin Vobr    schedule 06.08.2010
comment
Это, конечно, правильный ответ: вам нужно использовать доверенный одноранговый узел и цифровую временную метку, чтобы ваше приложение оставалось действующим ad vitam после того, как оно было подписано. - person Gui13; 22.11.2016
comment
Если вы посмотрите на свойства двоичного файла после истечения срока действия кода, есть ли у него вкладка цифровой подписи? - person Kyle Delaney; 23.05.2018
comment
Обратите внимание на мой ответ Защитника Windows ниже. Вы не хотите, чтобы срок действия вашего сертификата истек, поэтому получите сертификат на 10 лет. - person Tuntable; 26.08.2020

Следите за сертификатами с установленным WTD_LIFETIME_SIGNING_FLAG: это означает (несмотря на то, что вы можете предположить из названия), что программа, подписанная сертификатом, является недействительной после истечения срока действия сертификата, даже если программа не изменилась, и сертификат был действителен на момент подписания.

Это также влияет на обновления, поскольку даже если клиент установит флажок, чтобы доверять всем программам вашей компании, если ваша программа обновления не подписана с тем же сертификатом (или этот сертификат истекает), доверие не работает.

От: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx


Обработка меток времени с семантикой подписи за все время

Приложения или центры сертификации, которые не хотят, чтобы подписи с отметками времени успешно проверялись в течение неопределенного периода времени, имеют два варианта:

• Установите OID подписывающего лица в течение всего срока действия в сертификате подписи издателя.

Если сертификат подписи издателя содержит OID подписывающего лица за весь срок действия в дополнение к OID подписи кода PKIX, подпись становится недействительной по истечении срока действия сертификата подписи издателя, даже если подпись имеет отметку времени. OID подписывающего лица в течение всего срока действия определяется следующим образом:

szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13

• Установите WTD_LIFETIME_SIGNING_FLAG в структуре WINTRUST_DATA при вызове WinVerifyTrust.

Если вызывающий WinVerifyTrust устанавливает WTD_LIFETIME_SIGNING_FLAG в структуре WINTRUST_DATA и срок действия сертификата подписи издателя истек, WinVerifyTrust сообщает, что подпись недействительна, даже если подпись имеет отметку времени.

Если издатель отзывает сертификат подписи кода, который содержит OID подписывающего лица за все время существования или вызывающий WinVerifyTrust устанавливает WTD_LIFETIME_SIGNING_FLAG в структуре WINTRUST_DATA, WinVerifyTrust сообщает подпись как действительную, если выполняются оба следующих условия:

• Подпись была проставлена ​​до даты отзыва.

• Срок действия сертификата для подписи еще не истек. По истечении срока действия подпись становится недействительной.


Например: https://forum.startcom.org/viewtopic.php?f=15&t=2215&p=6827&hilit=lifetime+signing#p6827

Это серьезная проблема с сертификатами StartSSL. Меня не удивляет, что в сертификате, который стоит так мало, есть ограничения, но прятать это ограничение мелким шрифтом или в старом сообщении на форуме вместо того, чтобы ясно указывать в описании продукта, - плохой бизнес. Они могут исправить это в будущем, а другие могут иметь или не иметь такое же ограничение, поэтому письмо для проверки перед тем, как потратить, может быть разумным.

Угадайте, кто не знал спросить? LOL ... да ладно, живи и учись.

person James Newton    schedule 16.03.2011
comment
Ссылка на форум startcom мертва. Вот заархивированная версия: http://web.archive.org/web/20160405182742/https://forum.startcom.org/viewtopic.php?f=15&hilit=lifetime+signing&p=6827&t=2215 - person maf-soft; 23.10.2016
comment
Итак ... это действительно противоположность того, что подразумевает название. Разработан Microsoft? - person Suncat2000; 29.09.2020

Если вы обязательно добавите отметку времени при подписании двоичных файлов, вам не придется повторно подписывать их по истечении срока действия сертификата. Просто добавьте "/ t http://timestamp.verisign.com/scripts/timstamp.dll "в командную строку signtool, и цифровая подпись всегда будет помечена как действительная, если только сертификат не будет отозван и ЦС не будет доверенным.

Сертификаты для подписи кода причины настолько дороги, что кто-то должен подтвердить, что вы являетесь тем, кем вы себя называете. В моем случае они проверили адрес и номер телефона и позвонили мне. Однако сертификаты Comodo кажутся немного дешевле.

person BCran    schedule 04.08.2010
comment
Может ли кто-нибудь подтвердить, что указанный выше URL-адрес метки времени VeriSign действителен только для сертификатов VeriSign? Это мое предположение. - person Will Bickford; 17.11.2011
comment
Будет: нет, будет работать для сертификатов от любого производителя. Я использовал его со своим сертификатом Globalsign. - person BCran; 18.11.2011

Просто была эта проблема. В этой статье я нашел объяснение и вместе с @ BCran answer я решил это. Резюме:

  • Сертификат по умолчанию должен быть действителен во время проверки (когда клиент открывает программу, а не во время компиляции).
  • Чтобы сертификат был действителен вечно, вам необходимо подписать программу с помощью сервера TimeStamping. Это подтверждает, что вы не меняли время своего компьютера и использовали старый сертификат. Если вы используете сервер TimeStamping, вам не нужно каждый раз отказываться от кода.

Вот как вы бы сделали это, например, в VS.NET 2017:

подписание кода Visual Studio 2017

Если URL-адрес не работает, вы можете использовать любую службу. Вот несколько работающих URL-адресов: https://stackoverflow.com/a/9714864/72350

person Diego Jancic    schedule 24.09.2019

ОСТЕРЕГАЙТЕСЬ WINDOWS DEFENDER.

Вы никогда не хотите, чтобы срок действия вашего сертификата истек или как можно дольше, что, кажется, составляет 10 лет.

По истечении срока действия вашего сертификата Windows не распознает заменяющий сертификат как таковой. Ваша заявка попадает в конец очереди, как если бы она была подписана совершенно другой организацией.

Это означает, что пользователи будут получать неприятные сообщения при загрузке и могут вообще не иметь возможности запускать ваш код в зависимости от групповых политик. Это будет продолжаться до тех пор, пока большое количество разных людей не проигнорируют ужасные предупреждения и не установят ваше программное обеспечение.

Конечно, сервер отметок времени позволит существующим программам запускаться после истечения срока действия сертификата, но обновления будут проблемой.

Это не проблема для локально используемого программного обеспечения, но большая проблема, если вы хотите широко распространять свое программное обеспечение.

person Tuntable    schedule 26.08.2020

BCran писал: «Сертификаты для подписи кода причины настолько дороги, что кто-то должен подтвердить, что вы являетесь тем, кем вы себя называете.

Назовите меня глупым, но кто-нибудь думал о том, что разработчики могут самостоятельно рассчитывать точный размер своих исполняемых приложений во время создания и включать или не включать личность разработчика с вычисленным числом, вставьте хеш-номер в зашифрованная форма с приложением, и решить, ограничить ли приложение по времени или заставить его работать вечно (поскольку исполняемый код, уже находящийся на компьютере пользователя, вряд ли испортится или изменится сам по себе после 1, 3, 5, 10 , 100, 1 миллион лет)?

Кроме того, не имеет значения, сможет ли кто-то подтвердить ваш номер телефона и / или адрес. Эти вещи могут очень легко измениться, если разработчик пожелает, но не код приложения.

Преимущество: выполнение этой задачи ничего не стоит разработчику. В то же время пользователи могут быть уверены в действующем и безопасном приложении до тех пор, пока они хотят его использовать (или разрешено использовать его разработчиком), и приложение остается неизменным. Или должны ли крупные игроки, такие как Apple, Microsoft и эмитенты сертификатов, уговаривать разработчиков соглашаться постоянно платить за эту услугу?

ПРИМЕЧАНИЕ. Мое наивное и оригинальное понимание приложения с кодовой подписью состоит в том, чтобы предотвратить подделку кода приложения кем-либо. Но чем больше я смотрю на это, тем больше похоже, что это возможность для сторонних лиц и организаций зарабатывать деньги на разработчиках, от богатых и не очень богатых. Хорошо, кто-то должен постараться выяснить, кто вы есть. Но огромные различия в ценах, которые я вижу в Интернете на эту услугу, и такой большой упор на периоды в 1 или 3 года без возможности бессрочного подписанного приложения на весь срок службы предполагают, что у нас есть люди с очень дорогими офисами в городе, которые платят за свои услуги. арендная плата и их огромные зарплаты.

Почему разработчики не требуют от Apple и Microsoft решения безопасности, которое намного удобнее для разработчиков и такое же безопасное и безопасное для пользователей? Или же укажите точный размер в байтах окончательного установочного файла на веб-сайте разработчика во время загрузки, и пользователи смогут его проверить. Любых лишних байтов или их потери должно быть достаточно, чтобы сообщить пользователям о проблеме. Заставьте разработчиков иметь свой собственный веб-сайт, чтобы каждый мог видеть, кто они и где получить законную и неповрежденную копию программного обеспечения, и положите конец сайтам загрузки программного обеспечения, захватывающим копии программного обеспечения для разработчиков для загрузки со своих сайтов. Все надо делать с сайта разработчика и больше нигде.

person StrangeWorld    schedule 23.12.2020

Сертификаты для подписи кода не являются "управляемыми", то есть они не обновляются сами по себе ... скорее всего, вам придется приобрести новый, когда срок его действия истечет.

Вы можете создать центр сертификации (CA) - придерживаться с центром сертификации на базе Windows, если вы магазин только для Windows, но в противном случае я бы рекомендовал Linux с чем-то вроде Система сертификатов DogTag.

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

person static    schedule 30.04.2013