Отличается ли он от какого-либо другого сертификата, который я могу сгенерировать с помощью makecert или купить у некоторых авторитетов?
Что особенного в сертификате подписи кода?
Ответ 1
Как упоминалось Mile L и Boot to Head, использование расширенного ключа определяет, для чего ключ может использоваться.
Большинство коммерческих сертификационных центров (Verisign и др.) выдают сертификаты для отдельных целей или как можно меньше.
Они используют это сужение puropse, чтобы вырезать разные рынки для сертификатов, а затем оценивать их соответственно.
Вы видите, что они продают разные сертификаты подписывания объектов для ассемблеров Windows/Java/Office/Adobe Air и т.д., когда (в большинстве случаев) результирующий сертификат тот же.
Например, Comodo codesigning, выданный здесь, может подписать Java-апплеты, приложения WebStart, расширения Firefox и даже сборки Windows.
Ответ 2
Сертификат, используемый для подписи программного обеспечения, - это тот же сертификат, который будет использоваться для подписания любого документа. Что отличает подписное программное обеспечение, где подпись наконец-то находится. При типичном подписании документа подпись просто добавляется к исходному документу. Вы не можете добавлять подпись к большинству типов программного обеспечения по понятным причинам (некоторые интерпретируемые языки позволят это, но я не знаю, было ли это сделано на практике).
Решение проблемы подписи зависит от среды исполнения. Для исполняемого двоичного файла подпись часто сохраняется в отдельном файле. В Java вы можете иметь подпись, встроенную в исполняемый JAR файл.
У Microsoft есть хорошая ссылка на введение в процесс подписания.
Ответ 3
Это зависит от того, что вы с ним делаете. Если вы хотите, чтобы сертификат был принят браузером в SSL-связи, он должен иметь корневой сертификат, установленный в браузере. Сертификаты, созданные властями, уже имеют корневые сертификаты, установленные в браузерах.
Если вы используете сертификат только для подписывания сборки, вам это не нужно. Это зависит от того, кто проверяет сертификат и заботится ли он, является ли корень известным авторитетом.
Подробнее здесь:
Ответ 4
Насколько мне известно, у сертификатов есть атрибут "ключевого использования", который описывает, что использует сертификат, предназначен для: SSL-сервера, подписи кода, подписания электронной почты и т.д. Поэтому я думаю, что это касается ОС или веб-браузера, или почтовый клиент, чтобы проверить эти биты.
Ответ 5
Когда сертификат вызывается в действие, роль, которую он хочет выполнить, так же важна, как идентификация. Это не только о личности, но и о ролевой авторизации. Сертификат защиты электронной почты не должен выполнять аутентификацию сервера. Вопросы безопасности диктуют необходимое ограничение в мощности, предоставляемой с помощью единого сертификата. Основной API должен обеспечивать правильное использование, будь то через ОС или абстракцию, такую как .NET Framework.
Существуют разные типы сертификатов, потому что в аутентификации и авторизации есть очень разные роли, которые им понадобятся. Разрешение разных типов сертификатов и иерархии позволяет создать модель цепей сертификатов, как указано в "Пути сертификации" в сертификате. Сертификат проверки подлинности сервера должен иметь сертификат CA верхнего уровня где-то в доверенных корневых сертификатах... или быть частью генеалогического дерева сертификатов, которое в конечном итоге делает. Независимые сертификационные центры, я уверен, оценивают их по функциональности и доверию.
Boot To The Head прав... есть атрибут Enhanced Key Usage, который дает описание того, что утверждает cert (например, аутентификация сервера или в случае моего сертификата CA: Digital Signature, Certificate Подписание, Внебиржевая подпись CRL, Подписание CRL). Посмотрите подробности в свойствах сертификата, и вы найдете его.
Ответ 6
Я бы также добавил, что сборка .NET должна быть сильно названа (которая требует ее подписания), чтобы быть добавленной в GAC.
Существуют разные типы сертификатов... из центра сертификации, который поставляется на сервере Win 2003, вы можете запросить:
- Аутентификация клиента
- Защита электронной почты
- Аутентификация сервера
- Подписание кода
- Подписание отметки времени
- IPSec
- Другое