image

Возможно, некоторые читали про услугу, предоставляемую польской компанией 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).

image

Вот так номер! Никогда до этого момента я лично не сталкивался со смарт картами (не считая карт, используемых для входа в компании). «Гугление» выдало мне кучу статей с непонятными аббревиатурами; честно говоря, разбираться очень не хотелось, но чуть-чуть пришлось. Сначала выяснилось, что вроде бы существуют виртуальные смарт карты, притом «искаропки», от Microsoft, но для этого на компьютере должен быть включен TPM (в BIOS). У меня таких настроек на BIOSTAR-овской «материнке» не наблюдалось, вероятно, потому, что не был включен secure boot (но экспериментировать я не стал, во избежание потери всех данных. Возможно, я был не прав, и эта процедура безопасна, но я сторонник правила «работает — не трожь!»). Поиск решений от third party тоже был безуспешным: то, что по словам создателей, должно было бы работать в Windows 7 (свежее я не нашел), отказывалось работать в Windows 10.

В конце-концов, проблема была решена покупкой вот такого USB token-а от PIVKey (к слову, он обошелся мне в $9.52: был куплен used, от Amazon-овского warehouse).

image

Токен этот мне понравился: заработал, что называется, с «пол-пинка» (правда, после установки минидрайвера и утилиты управления с сайта производителя), и прекрасно отработал в процедуре генерации ключей на сайте 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 :)
Поделиться с друзьями
-->

Комментарии (9)


  1. pavel_pimenov
    08.02.2017 20:07

    А скан какого документа нужно им слать?


    1. sens_boston
      08.02.2017 20:12

      Я отправлял скан американских прав (driver's license). Вот их требования:

      Copy of an identity document of the person placing the order (personal ID card, passport, driving licence, permanent residence card) — in Latin characters. The copy should depict the entire document (both sides)


  1. Antelle
    08.02.2017 21:20

    А эмуляторы с ними работают, не проверяли?


    1. sens_boston
      08.02.2017 22:32

      Какие эмуляторы вы имеете ввиду, смарт карт? Я пытался найти хоть один рабочий под Windows 10, но так и не смог найти.


      1. Antelle
        08.02.2017 22:35

        Да-да, софт-эмуляторы. Понятно, может быть, я попробую. Теоретически должно быть ок.


        1. sens_boston
          08.02.2017 22:39

          Отпишитесь потом, будет интересно прочесть!

          P.S. Но даже если эмулятор и сработает, то «хардверный» token я все равно сдавать «взад» не буду (хотя это и возможно): недорогой, практичный и цвет мой любимый :)


  1. bitrixworkshop
    09.02.2017 01:14

    Нет ничего удивительного что разработчик на платформе Microsoft и на инструментах Microsoft вынужден пользоваться API для криптографии от этой же платформы. То, что требуют токен — это усиление безопасности.

    Неприятно сталкиваться с ситуацией когда нечто, что всегда работало без проблем, сейчас требует особого внимания. Вот это понятно.
    Что расстраивает введение платы за ЭЦП — тем более понятно (да еще за такую цену).


  1. Busla
    09.02.2017 12:17

    То, что вы описали явно не генерирует private key, а экспортирует тот, что уже был на купленном с рук — кто и что туда записал — отдельная занимательная история.


    1. sens_boston
      09.02.2017 12:20

      Э-э-э?.. Еще раз, пожалуйста, но по-русски и «членораздельно» :D