Изменения процедуры выдачи сертификата для подписи кода у Certum
Возможно, некоторые читали про услугу, предоставляемую польской компанией 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 токен.
P.S. Возможно, специалисты по информационной безопасности улыбнутся моей наивности, читая этот текст, но мой пост для них и не предназначен. Я просто хочу чуть-чуть облегчить жизнь и сберечь время программистам open source:)