Что особенного в сертификате подписи кода? - PullRequest
10 голосов
/ 15 октября 2008

Отличается ли он от любого другого сертификата, который я могу сгенерировать через makecert или купить у какого-либо органа?

Ответы [ 6 ]

5 голосов
/ 10 декабря 2008

Как указано Миля L и Загрузка в голову Использование расширенного ключа - это то, что определяет цель, для которой ключ может быть использован.

Большинство коммерческих центров сертификации (Verisign et al.) Выдают сертификаты для отдельных целей или для как можно меньшего числа.

Они используют это сужение разрыва, чтобы вырезать различные рынки для сертификатов, а затем оценивают их соответственно.

Вы видите, как они продают разные сертификаты подписи объектов для сборок Windows / Java / Office / Adobe Air и т. Д., Когда (в большинстве случаев) полученный сертификат совпадает.

Например, выданный здесь сертификат 10101 * Comodo может подписывать апплеты Java, приложения WebStart, расширения Firefox и даже сборки Windows.

3 голосов
/ 15 октября 2008

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

Решения проблемы подписи зависят от среды выполнения. Для исполняемого двоичного файла подпись часто хранится в отдельном файле. В Java вы можете встроить подпись в исполняемый файл JAR.

У Microsoft есть хороший справочник для введения в процесс подписания .

2 голосов
/ 21 октября 2008

Когда сертификат вызван в действие, роль, которую он призван выполнять, так же важна, как и идентификация. Речь идет не только о личности, но и о роли авторизации. Сертификат защиты электронной почты не должен быть в состоянии выполнить проверку подлинности сервера. Проблемы безопасности диктуют необходимое ограничение полномочий, предоставляемых одним сертификатом. Базовый API должен обеспечивать правильное использование, будь то через ОС или абстракцию, например .NET Framework.

Существуют разные типы сертификатов, поскольку в аутентификации и авторизации очень разные роли, которые могут понадобиться. Разрешение различных типов сертификатов и иерархий позволяет моделировать цепочки сертификатов, как указано в «Пути сертификации» сертификата. Сертификат проверки подлинности сервера должен иметь сертификат CA верхнего уровня где-нибудь в доверенных корневых сертификатах ... или быть частью семейного дерева сертификатов, что в конечном итоге имеет место. Я уверен, что сторонние центры сертификации оценивают их по функциональности и доверию.

Boot To The Head правильно ... есть атрибут Enhanced Key Usage, который предоставляет описание того, какой сертификат претендует на роль (например, аутентификация на сервере или в случае моего CA) сертификат: цифровая подпись, подпись сертификата, автономная подписка CRL, подпись CRL). Посмотрите детали в свойствах сертификата, и вы найдете его.

2 голосов
/ 17 октября 2008

Насколько мне известно, сертификаты имеют атрибут «использование ключа», который описывает, для чего предназначен сертификат: сервер SSL, подпись кода, подпись электронной почты и т. Д. Поэтому я думаю, что это зависит от ОС или веб-браузера. или почтовый клиент, чтобы проверить эти биты.

2 голосов
/ 15 октября 2008

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

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

Подробнее здесь:

http://en.wikipedia.org/wiki/Root_certificate

1 голос
/ 16 октября 2008

Я бы также добавил, что для добавления в GAC сборка .NET должна быть строго названа (что требует ее подписи).

Существуют различные типы сертификатов ... из ЦС, который входит в состав сервера Win 2003, вы можете запросить:

  • Аутентификация клиента
  • Защита электронной почты
  • Аутентификация сервера
  • Подписание кода
  • Время подписания
  • IPSec
  • Другое
...