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

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

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

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

Любые идеи?

Ответ 1

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

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

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

Ответ 2

Если вы отметьте метку своего кода, пока сертификат действителен, эффект заключается в том, что ваши сертификаты с истекшим сроком годности хороши.

От Часто задаваемые вопросы о сертификате подписи кода Thawte:

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

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

Срок действия кода, действующего после истечения срока действия сертификата подписи кода?

  • Microsoft® Authenticode® (многоцелевой) позволяет вам маркировать подписанный код. Timestamping гарантирует, что код не истечет, когда срок действия сертификата истечет, потому что браузер проверяет метку времени. Служба timestamping предоставляется любезностью VeriSign. Если вы используете службу timestamping при подписании кода, хеш вашего кода отправляется на сервер VeriSigns для записи временной отметки для вашего кода. Пользовательское программное обеспечение может различать код, подписанный с истекшим сертификатом, которому не следует доверять, и код, который был подписан с сертификатом, который был действителен на момент подписания кода, но который впоследствии истек.

Ответ 3

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

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

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


Обработка временной метки с помощью семантики подписи времени жизни

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

• Установите идентификатор 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 сообщает подпись как недопустимую, даже если подпись имеет временную метку.

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

Ответ 4

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

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

Ответ 5

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

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

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

code signing visual studio 2017

Если URL не работает, вы можете использовать любой сервис, вот несколько URL-адресов, которые работают: fooobar.com/questions/304956/...

Ответ 6

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

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

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

Ответ 7

Вам следует избегать отметки времени для процесса подписания или отметки времени, пока она действительна для сертификата. Инструменты, такие как Знак PE, а другой позволяет вам контролировать эти параметры