Популярні питання про сертифікати codesigning

Q: Навіщо потрібні CodeSigning сертифікати?

A: CodeSigning сертифікати рекомендуються до використання всім видавцям, які розповсюджують код або контент в інтернеті або в корпоративних мережах. Клієнти розуміють всі небезпеки скачування файлів в мережі і набагато більше вірять підписаним файлів, ніж не підписаним. Бачачи підпис видавця, клієнт розуміє, що даний файл є автентичним, в ньому відсутні будь-які віруси або помилки. Підпис видавця - надійний спосіб захисту програми від будь-яких сторонніх модифікацій.

Q: Як здійснюється підпис коду за допомогою CodeSigning сертифіката?

A: Щоб підписати код, необхідно пропустити його через спеціальний алгоритм хешування, після чого використовувати свій приватний ключ для підпису хеша. В результаті цього ви отримаєте цифровий підпис. Потім ви формуєте блок підпису, який містить цифрову сигнатуру і CodeSigning сертифікат. Інструменти, такі як Authenticode, дозволяють задавати тимчасову мітку для блоку підписи, грунтуючись на поточну дату і час. Нарешті, ви прив'язуєте блок підпису з часовою міткою до програмного забезпечення. Тепер ви можете публікувати підписану програму на своєму сайті для завантаження.

Тимчасова мітка потрібно для того, щоб гарантувати, що термін дії коду не має терміну дії разом з терміном дії Code Signing сертифіката. Якщо ваш код має тимчасову мітку, то в такому випадку цифровий підпис буде дійсно навіть після закінчення терміну дії сертифіката. Новий сертифікат знадобиться тільки в тому випадку, якщо ви хочете підписати додатковий код. Якщо ви не використали можливість додавання тимчасових міток в процесі підпису додатків, вам знадобиться заново підписувати код і передавати його своїм клієнтам.

Q: Як скористатися своїм сертифікатом після його покупки?

A: Після того, як ви замовили Code Signing сертифікат, вам на пошту прийде спеціальний лист для отримання сертифіката. При отриманні сертифіката використовуйте ті ж самі пристрої, з яких було розпочато замовлення (той же комп'ютер і той же веб-браузер). При використанні іншого комп'ютера або іншого веб-браузера ви НЕ ЗМОЖЕТЕ встановити сертифікат.

Після завантаження та установки сертифікат буде переміщений в спеціальне сховище сертифікатів веб-браузера. Після цього ви зможете експортувати його у вигляді pfx-файлу. Надалі ви можете використовувати цей .pfx-файл для підпису додатків.

Певний виняток з цього процесу становить сертифікати для підпису Java (CSR-запит генерується на стороні клієнта на Java).

Q: Що станеться, якщо термін дії сертифіката CodeSigning закінчиться?

A: Сертифікати Code Signing видаються на термін від одного до трьох років. Закінчення строку дії сертифіката CodeSigning означає, що ви не зможете створювати нові сигнатури. Всі минулі сигнатури будуть працювати протягом заданої тимчасової мітки (timestamp).

У випадку з Microsoft Authenticode використання тимчасових міток дозволяє уникнути закінчення терміну дії коду при закінченні терміну дії сертифіката.

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

Варто пам'ятати про те, що деякі сертифікати не підтримують створення тимчасових міток (наприклад, сертифікати для Netscape Object Signing і Sun Java).

Q: В чому полягає різниця між підписом коду і підписом документів? Чи можна підписувати PDF-файли звичайними Code Signing сертифікатами?

A: У переважній більшості CodeSigning сертифікати мають розширення extKeyUsage зі значенням codeSigning і іноді також commercialCodeSigning. Однак в них немає значень, які дозволяють інші варіанти використання.

З правила RFC 5280 для розширення Extended Key Usage слід, що «якщо розширення задано, то в такому випадку сертифікат повинен використовуватися тільки для досягнення однієї з відповідних цілей».

Однак в ситуації, винесеною в питання, сертифікат Code Signing використовується для підпису документа, який не є кодом, що є прямим порушенням специфікації X.509 Public Key Infrastructure Certificates.

Саме з цієї причини є висока ймовірність того, що Adobe Reader відхилить PDF підписи, згенеровані за допомогою code signing сертифіката. І навіть якщо зараз з сертифікатами немає проблем, ніхто не гарантує, що цього не станеться в майбутньому з виходом нових версій Adobe Reader. З цієї причини багато реселлери сертифікатів поділяють сертифікати для підписи коду і сертифікати для підпису документів (зокрема, сертифікати для підпису PDF). Ціни на PDF-сертифікати найчастіше в кілька разів вище.

Q: Чи є які-небудь відмінності між code signing сертифікатами для Java, Adobe AIR, Authenticode, VBS?

A: Як випливає з специфікації RFC 5280, будь-який CodeSigning сертифікат може використовуватися для підпису Java-коду, AIR-коду, Authenticode, VBS і т.д. Відповідно, з технічної точки зору ніяких відмінностей між code signing сертифікатами немає.

Однак деякі центри сертифікації накладати певні обмеження на сферу застосування своїх codesigning сертифікатів (приклад: Thawte і Symantec, у яких сертифікати поділяються за типами).

Q: Як підписати файли Visual Studio .msi? Після того, як я підписую .msi, всі вхідні в інсталяційний пакет .exe файли втрачають свої сигнатури. Що зробити, щоб сигнатури цих файлів залишалися під час інсталяції пакета на комп'ютер клієнта?

A: Visual Studio створює дві папки під час компіляції: obj і bin. Вихідні файли найчастіше копіюються з папки obj в папку bin. Якщо підписувати файли в папці bin, то вони згодом будуть записуватись файлами з папки obj. Вихід із ситуації: підпис exe-файлів, що знаходяться в папці obj. В цьому випадку сигнатури всіх exe-файлів залишаться.

Q: Чи є обмеження на кількість додатків, яке можна підписувати з допомогою Code Signing сертифіката?

A: Ні. Ви можете підписувати CodeSigning сертифікатом стільки додатків, скільки вважаєте за потрібне, за умови, що додаток буде поширюватися організацією, на яку був виданий сертифікат.

Q: Чи можна підписувати драйвера (Kernel-mode) за допомогою CodeSigning сертифіката?

Q: Як обійти Smart Screen при установці підписаного додатки на Windows 8?

A: Для цього необхідно використовувати EV Code Signing сертифікат. Програми, підписані за допомогою EV CodeSigning, автоматично вважаються довіреними, навіть якщо для цього видавця або файлу відсутня будь-яка репутація. Задавати репутацію можна тільки для Authenticode сертифікатів, які були випущені підтверджуючий центр, що є членом Windows Root Certificate Program (наприклад, Symantec).

Залишилися питання? Пишіть!