Что происходит, когда истекает срок действия сертификата подписи кода? - PullRequest
47 голосов
/ 01 декабря 2008

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

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

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

Есть идеи?

Ответы [ 6 ]

75 голосов
/ 07 августа 2010

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

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

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

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

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

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

Остерегайтесь сертификатов с установленным 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 ... да ладно, живи и учись.

10 голосов
/ 05 августа 2010

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

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

7 голосов
/ 01 декабря 2008

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

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

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

0 голосов
/ 04 декабря 2015

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...