Можливо, деякі читали про послугу, що надається польською компанією Certum для open source розробників: недорогий сертифікат для підпису коду в цій статті (якщо ні, то прочитайте).
На жаль, деякі речі у світі з часом стають гіршими або дорожчими (або й тим, і іншим разом). Безкоштовна послуга Certum-а перетворилася на платну (сертифікат став коштувати 14.00, а з лютого цього року - 28.00), плюс з цього року процедура генерації пари ключів змінилася. Ось про це я і хочу написати.
Я досить давно (з 2010 року) користуюся сертифікатами Certum для підпису своїх додатків, але в цьому році, з певної причини, мені потрібен новий сертифікат (а не оновлення попереднього). Не передбачаючи ніякого підступу, я заплатив 14 євро через PayPal, заповнив запитальник і відправив скани документа (правда, на цей раз придирок було трохи більше, але все в кінці-кінців «устаканилося»), і активував сертифікат через web-форму на сайті Certum (через Chrome). Мене відразу ж збентежило те, що не було запиту на генерацію пари ключів. І, природно, виданий мені ключ не містив private key.
Зізнаюся відразу, я далекий від технологій інформаційної безпеки; раніше вся процедура проходила гладко і отримання .pfx сертифіката не викликало якихось питань (хоча не можу зараз в точності пригадати, як було раніше). Після звернення в службу підтримки, з'ясувалося, що інсталяцію/створення сертифіката потрібно проводити тільки в Internet Explorer-е, і обов'язково потрібна smart card через стандартну підсистему Windows (виводиться стандартний діалог із запитом smart card).
Ось так номер! Ніколи до цього моменту я особисто не стикався зі смарт картами (не рахуючи карт, що використовуються для входу в компанії). «Гугління» видало мені купу статей з незрозумілими абревіатурами; чесно кажучи, розбиратися дуже не хотілося, але трохи довелося. Спочатку з'ясувалося, що начебто існують віртуальні смарт карти, притому «спотворки», від Microsoft, але для цього на комп'ютері повинен бути включений TPM (в BIOS). У мене таких налаштувань на BIOSTAR-івській «материнці» не спостерігалося, ймовірно, тому, що не був включений secure boot (але експериментувати я не став, щоб уникнути втрати всіх даних. Можливо, я був не правий, і ця процедура безпечна, але я прихильник правила «працює - не чіпай!»). Пошук рішень від third party теж був безуспішним: те, що за словами творців, мало б працювати у Windows 7 (свіже я не знайшов), відмовлялося працювати у Windows 10.
Зрештою, проблема була вирішена покупкою ось такого USB token-а від PIVKey (до речі, він обійшовся мені в $9.52: був куплений used, від Amazon-івського warehouse).
Токен цей мені сподобався: заробив, що називається, з «пів-копняка» (правда, після установки мінідрайверу і утиліти управління з сайту виробника), і прекрасно відпрацював у процедурі генерації ключів на сайті Certum! До слова, даний токен має 30 слотів для зберігання секретної інформації (приватних ключів та сертифікатів) обсягом у 24 Кбайт, та 6-значний пін-код.
Private key, правда, записується не експортованим (що, мабуть, правильно), тому для генерації ключа для підпису, потрібно буде скористатися стандартною процедурою Windows:
- проінсталювати сертифікат з public ключем, отриманий від Certum
- вставити токен у USB порт
- виконати наступну команду: certutil -exportPFX -p [ваш _ пароль _ сертифіката] my «» [серійний _ номер _ сертифіката] «» [ім'я _ файла] .pfx
- ввести пін-код токена (factory default «000000» ви можете змінити утилітою від виробника)
Після чого отриманий сертифікат може бути використаний для підпису ваших програм через Visual Studio IDE, або через утиліти командного рядка (наприклад, signtool.exe). Так, також кожен раз буде потрібно USB токен.
Можливо, фахівці з інформаційної безпеки посміхнуться моїй наївності, читаючи цей текст, але мій пост для них і не призначений. Я просто хочу трохи полегшити життя і зберегти час програмістам open source:)