SSL-сертификаты, закрытые ключи и запросы на подпись

Время на прочтение
6 мин

SSL-сертификаты, закрытые ключи и запросы на подпись

В данной статье будут рассмотрены примеры ее использования для выписки сертификатов по запросу PKCS#10, а также для проверки подписи CMS, выработанной по российским криптоалгоритмам.
В основе нашего «центра сертификации» лежит библиотека BouncyCastle. Нужно заметить, что на сайте bouncycastle.org/csharp/ находится устаревшая версия библиотеки, не заработавшая в решении без фиксов. Рабочую версию можно взять на гитхабе — https://github.com/bcgit/bc-csharp.

Там же в наличии тесты с кучей вариантов использования библиотеки для различных нужд.

Нам из всего этого нужно не много:
— Работа с запросами PKCS#10
— Выписка сертификатов по данным запроса

Если есть необходимость организации входа на сайт с помощью сертификата, реализуем еще один алгоритм, о нем ниже.

Корневой сертификат может быть сгенерирован библиотекой и использоваться в дальнейшем. У нас он уже есть, в формате PEM. Так же имеется закрытый ключ.

Клиент

В нашей системе во внешний мир смотрит сервер IIS с ASP.NET web-api с методом, выдающим сертификат по запросу PKCS#10. На клиенте, то-есть на самих демо-площадках, крутится приложение на AngularJs, работающее с плагином. Конечно же можно на чем угодно клиента писать, но суть работы на клиентской стороне сводится к следующему:

— передаем функции плагина createPkcs10 данные полей для формирования запроса PKCS#10, получаем текст запроса.
— текст запроса PKCS#10 передаем post-запросом на метод апи, получаем сертификат или ошибку в случае невозможности выписать сертификат.
— передаем функции плагина importCertificate полученный сертификат, импортируем его на устройство.

Рабочая версия сайта с возможностью управления сертификатами на устройствах Рутокен ЭЦП сейчас крутится здесь — http://ra.rutoken.ru. Можно создать ключ и сделать запрос с необходимыми полями. Далее выписать тестовый сертификат, который будет импортирован на токен.
! Для работы нужно установить плагин и подключить Рутокен ЭЦП!

Сервер

Но вернемся на серверную часть. Итак, у нас есть корневой сертификат в формате PEM и закрытый ключ к нему. Будем выдавать пользовательский сертификат по запросу PKCS#10. Сам запрос также приходит от клиента в текстовом виде, в формате PEM.

Проверка подписанного CMS на сервере

Будем генерировать CMS на клиенте и отправлять его на сервер, где проверим подпись и цепочку сертификатов.

Из BouncyCastle задействуем:
— Проверку подписи signed CMS
— Построение цепочки сертификатов

Вся проверка сводится к проверке подписи и построению цепочки сертификатов, включающей корневой и выданный на нем пользовательский. Для простоты не будем использовать промежуточные сертификаты и не будем работать с CRL, хотя в библиотеке возможность организации проверки списка отозванных сертификатов конечно же есть.

Проверку подписанного CMS делаем так:

Еще раз повторюсь, пример подходит для тестирования или демонстрации решений, работающих с российскими сертификатами.

13 октября, 2016 11:47 дп

OpenSSL – это многофункциональный инструмент командной строки, предназначенный для управления инфраструктурой открытых ключей (PKI) и HTTPS.

Данное руководство предлагает вам краткий обзор команд OpenSSL, а также примеры использования и генерирования закрытых ключей, запросов на подпись сертификатов и изменения формата сертификата.

Запросы на подпись сертификатов (CSR)

Чтобы получить SSL-сертификат от центра сертификации (ЦС), нужно сначала создать запрос на подпись сертификата (CSR). CSR включает в себя открытый ключ и некоторые дополнительные данные. При подписи эти данные добавляются в сертификат.

Чтобы сгенерировать запрос на подпись сертификата, нужно предоставить данные о сертификате. В частности важно правильно заполнить поле Common Name (CN) в разделе Distinguised Name, в котором нужно указать FQDN хоста, для которого предназначается сертификат. Чтобы обойти интерактивные подсказки, можно передать все запрашиваемые данные через командную строку.

Другие поля в разделе Distinguised Name запрашивают данные об организации или компании. Если вы заказываете сертификат в ЦС, эти поля, как правило, нужно обязательно заполнить.

Запрос на подпись сертификата имеет такой вид:

Чтобы ответить на запросы CSR в неинтерактивном режиме, добавьте в команду опцию –subj, например:

-subj «/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com»

Генерирование запроса на подпись сертификата

Этот метод позволяет вам подписать сертификат в ЦС и защитить веб-сервер Apache или Nginx с помощью HTTPS. Сгенерированный запрос на подпись можно отправить в ЦС, чтобы получить подписанный сертификат. Если ЦС поддерживает SHA-2, добавьте опцию -sha256.

Следующая команда создаст 2048-битный закрытый ключ (domain.key) и CSR (domain.csr):

openssl req
-newkey rsa:2048 -nodes -keyout domain.key
-out domain.csr

Заполните поля в запросе на подпись.

Опция -newkey rsa:2048 создаст 2048-битный RSA-ключ. Опция –nodes отключает пароль для закрытого ключа.

Генерирование запроса для существующего закрытого ключа

Если у вас уже есть закрытый ключ, но нет сертификата, вы можете сгенерировать запрос для этого ключа.

Следующая команда создаст запрос сертификата (domain.csr) для существующего ключа (domain.key):

openssl req
-key domain.key
-new -out domain.csr

Ответьте на запросы программы, чтобы продолжить. Опция –new указывает, что запрос нужно сгенерировать.

Генерирование запроса для существующего сертификата и ключа

Этот метод позволяет обновить существующий сертификат, если оригинальный запрос на подпись сертификата был утерян.

Следующая команда создаст запрос (domain.csr) на основе существующего сертификата (domain.crt) и закрытого ключа (domain.key):

Читать также:  Как получить бесплатную путевку по сертификату Мосгортур

openssl x509
-in domain.crt
-signkey domain.key
-x509toreq -out domain.csr

Опция -x509toreq создаст сертификат X509.

Генерирование SSL-сертификата

Если вы хотите защитить свой сервис, но не хотите подписывать его в ЦС, вы можете создать и подписать сертификат самостоятельно.

Такие сертификаты называются самоподписанными.

По сути, самоподписанный сертификат – это сертификат, подписанный своим собственным закрытым ключом. Такие сертификаты тоже шифруют соединения, однако они не подтверждают подлинности сайта, потому пользователи, которые открывают сайт, увидят предупреждение.

Если вам ненужно подтверждать подлинность сайта, вы можете спокойно использовать самоподписанные сертификаты.

Генерирование самоподписанного сертификата

Этот метод позволяет защитить веб-сервер Apache или Nginx с помощью HTTPS.

openssl req
-newkey rsa:2048 -nodes -keyout domain.key
-x509 -days 365 -out domain.crt

Заполните запрос на подпись.

Опция -x509 создаёт самоподписанный сертификат. Опция -days 365 задаёт срок действия сертификата в днях.

Создание сертификата для существующего закрытого ключа

Если у вас уже есть закрытый ключ, но нет сертификата, вы можете сгенерировать сертификат для этого ключа.

Следующая команда создаст сертификат (domain.csr) для существующего ключа (domain.key):

openssl req
-key domain.key
-new
-x509 -days 365 -out domain.crt

  • Опция -x509 создаёт самоподписанный сертификат. Опция -days 365 задаёт срок действия сертификата в днях.
  • Опция –new запускает запрос данных для создания CSR.

Этот метод позволяет создать сертификат, если у вас уже есть закрытый ключ и запрос на подпись сертификата.

Следующая команда создаст сертификат (domain.crt) на основе существующего запроса (domain.csr) и закрытого ключа (domain.key):

openssl x509
-signkey domain.key
-in domain.csr
-req -days 365 -out domain.crt

Просмотр сертификатов

Файлы сертификатов и запросов на подпись закодированы в формате PEM, который не может быть прочитан человеком.

Данный раздел научит вас читать такие файлы с помощью ряда команд.

Просмотр CSR

Эта команда позволяет просмотреть содержимое файла запроса на подпись сертификата в виде простого текста:

openssl req -text -noout -verify -in domain.csr

Просмотр сертификата

Следующая команда позволяет просмотреть содержимое сертификата в виде простого текста:

openssl x509 -text -noout -in domain.crt

Проверка подписи сертификата

Чтобы убедиться, что сертификат был подписан в ЦС, введите:

openssl verify -verbose -CAFile ca.crt domain.crt

Закрытые ключи

Чтобы создать закрытый 2048-битный ключ, защищённый паролем, введите:

openssl genrsa -des3 -out domain.key 2048

По запросу введите пароль, чтобы продолжить.

Проверка закрытого ключа

Эта команда подтвердит валидность закрытого ключа:

openssl rsa -check -in domain.key

Если ключ зашифрован, программа запросит парольную фразу. Предоставьте пароль от ключа, чтобы просмотреть его в незашифрованном формате.

Совпадение ключа с сертификатом и запросом

Эта команда позволяет узнать, относится ли закрытый ключ (domain.key) к тому или иному сертификату (domain.crt) и запросу (domain.csr):

Если команды вернули одинаковый вывод, то, скорее всего, этот ключ, запрос и сертификат связаны.

Шифрование закрытого ключа

Следующая команда возьмёт незашифрованный ключ (unencrypted.key) и зашифрует его (encrypted.key):

openssl rsa -des3
-in unencrypted.key
-out encrypted.key

Введите пароль, чтобы зашифровать ключ.

Дешифровка закрытого ключа

Эта команда может расшифровать зашифрованный ключ:

openssl rsa
-in encrypted.key
-out decrypted.key
Enter the pass phrase for the encrypted

Введите пароль, чтобы расшифровать ключ.

Форматы сертификатов

До этого в руководстве рассматривались только сертификаты X.509 с кодированием ASCII PEM. Однако существует множество других форматов. Некоторые форматы позволяют объединить компоненты – ключ, запрос, сертификат – в один файл.

Конвертация PEM в DER

Чтобы конвертировать PEM в DER, используйте такую команду:

openssl x509
-in domain.crt
-outform der -out domain.der

Формат DER обычно использует Java.

Конвертация DER в PEM

Для этого введите:

openssl x509
-inform der -in domain.der
-out domain.crt

Конвертация PEM в PKCS7

Чтобы добавить сертификаты PEM (domain.crt и ca-chain.crt) в файл PKCS7 (domain.p7b), введите:

openssl crl2pkcs7 -nocrl
-certfile domain.crt
-certfile ca-chain.crt
-out domain.p7b

Файлы PKCS7 (также известные как P7B) часто используются в Java Keystores и Microsoft IIS (Windows).

Конвертация to PKCS7 в PEM

Чтобы конвертировать PKCS7 в PEM, введите:

openssl pkcs7
-in domain.p7b
-print_certs -out domain.crt

Обратите внимание: файл PKCS7 содержит много компонентов, а именно сертификат и промежуточный сертификат ЦС.

Конвертация PEM в PKCS12

Следующая команда позволяет объединить закрытый ключ и сертификат в файл PKCS12.

openssl pkcs12
-inkey domain.key
-in domain.crt
-export -out domain.pfx

Программа запросит пароль. Файл PKCS12 позволяет объединить несколько сертификатов в один PEM-файл (domain.crt).

Файлы PKCS12 (или PFX) обычно используются для перемещения наборов сертификатов в Micrsoft IIS (Windows).

Конвертация PKCS12 в PEM

Чтобы конвертировать файл PKCS12 в формат PEM, введите:

openssl pkcs12
-in domain.pfx
-nodes -out domain.combined.crt

Если в файле PKCS12 было несколько объектов (например, ключ и сертификат), все они переместятся в файл PEM.

Версии OpenSSL

Чтобы проверить версию OpenSSL, используйте команду openssl version.

Следующая команда выведет версию OpenSSL и все параметры, с которыми она была скомпилирована.

openssl version -a

В данном руководстве используется бинарный файл OpenSSL со следующими подробностями:

OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Apr  7 21:22:23 UTC 2014
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector —param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,—noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: «/usr/lib/ssl»

Читать также:  Какой документ признается действительным по закону на всей территории РФ?

Теперь вы знакомы с основными методами и командами OpenSSL.

SSL-сертификаты, закрытые ключи и запросы на подпись

Порядок аннулирования

Уважаемый владелец квалифицированной электронной подписи, выпущенной удостоверяющим
центром СберКорус (ООО «КОРУС Консалтинг СНГ»)!

При выдаче квалифицированной электронной подписи портал
Государственных услуг (Госуслуги) направляет уведомление владельцу о загрузке сертификата в единую
систему идентификации и аутентификации (ЕСИА) с указанием наименования удостоверяющего центра,
выпустившего такой сертификат.

Если Вам пришло такое уведомление, значит некоторое
время назад Вы обращались к нашему партнеру — уполномоченному представителю УЦ СберКорус для получения
услуг по кадастровому учету или регистрации прав в электронном виде. Такие сделки осуществляются в
электронном виде, а документы подписываются электронной подписью участников сделки.

Что следует знать владельцу сертификата электронной
подписи (КСКП ЭП)?

Выпуск электронной подписи возможен

только после идентификации личности и получения уполномоченным
представителем удостоверяющего центра подписанного заявления на ее выпуск. Пользователь КСКП ЭП обязан
расписаться на бланке сертификата, подтверждая состав сведений, включенных в сертификат.

Выпуск электронной подписи осуществляется

с использованием мобильного приложения и не подлежит передаче
пользователю или использованию на других ресурсах/порталах.

После завершения учетно-регистрационных действий

владелец подписи может подать заявление на отзыв электронной
подписи.

Для отзыва электронной подписи необходимо заполнить
«Заявление на прекращение действия квалифицированного сертификата ключа проверки электронной подписи» и
направить его скан или фотографию в УЦ СберКорус на электронную почту.

SSL-сертификаты, закрытые ключи и запросы на подпись

Утилита генерации запросов на квалифицированный сертификат

SSL-сертификаты, закрытые ключи и запросы на подпись

Одним из центральных объектом инфраструктуры открытых ключей (Public Key Infrastructure — PKI/ИОК) наряду с ключевой парой является сертификат, который сегодня фактически является аналогом гражданского паспорта.
Имея на руках сертификат, гражданин может получить доступ к порталу Госуслуг, заплатить налоги, защитить свою , подписывать и шифровать документы и многое другое.

Сертификат, также как и

, выдается на основании заявления и предоставления ряда документов. Перечень документов для получения сертификата есть на любом удостоверяющем центре, имеющим (новое название — министерство цифрового развития, связи и массовых коммуникаций). Заявление на паспорт имеет собственноручную подпись заявителя. В момент получения паспорта заявитель поставит свою подпись и в паспорт, которая будет заверена сотрудником паспортного стола и гербовой печатью. Фотография и умение владельца воспроизводить свою подпись и позволяют идентифицировать его как владельца конкретного паспорта.

По аналогичной схеме происходит и получение сертификата ключа проверки электронной подписи (СКПЭП). Сначала гражданин, желающий получить сертификат, должен приобрести «навык» в проставлении собственноручной подписи. Этот «навык» реализуется через получение заявителем ключевой пары, которая содержит открытый ключ или ключ проверки электронной подписи (КПЭП) и закрытый ключ или ключ электронной подписи, который, собственно, и позволяет генерировать электронную подпись и подписывать электронный документ. Идентификация электронной подписи под документом осуществляется по следующему алгоритму. Из сертификата определяется каким ключом (ГОСТ Р 34.10-2001, ГОСТ Р 34.10-2012 с длиной ключа 64 или 128 байт) был подписан документ. По типу ключа определяется алгоритм хэширования, который использовался при подписании документа. Это может быть ГОСТ Р 34.11-94 или ГОСТ Р 34.11-2012 с длиной хэш 256 или 512 бит. По выбранному алгоритму считается хэш от исходного документа. А по значению посчитанного хэш от исходного документа, публичного ключа (КПЭП) и его параметрам (все это берется из сертификата СКПЭП) и проверяется достоверность электронной подписи под документом.

Для создания ключевой пары используются различные средства криптографической защиты информации (СКЗИ), поддерживающие криптографические алгоритмы ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012. При этом следует помнить, что использование схемы подписи ГОСТ Р 34.10-2001 для формирования подписи после 31 декабря 2018 года не допускается! СКЗИ, которые реализуют различные криптографические алгоритмы и протоколы могут быть как программными, так и аппаратными. Доступ к СКЗИ осуществляется через криптографические интерфейсы. Абсолютное большинство сертифицированных СКЗИ с российской криптографией поддерживает либо универсальный криптографический интерфейс PKCS#11, который поддерживается на всех платформах, либо интерфейс CSP и CryptoAPI от Микрософт на платформах MS Windows (далее MS CSP). Именно эти два криптографических интерфейса и поддерживаются, например, порталом Госуслуг. Именно эти два типа СКЗИ и будут рассматриваться далее:

SSL-сертификаты, закрытые ключи и запросы на подпись

Следует иметь ввиду, что если есть желание или необходимость работы с электронной подписью не только на платформе Windows, но и на других платформах (Linux, macOS и т.п.), то следует выбирать токены PKCS#11 с поддержкой российской криптографии.

Помимо основной функции, связанной с генерацией запроса, в утилите предусмотрены функции для работы с токенами и сертификатами:

SSL-сертификаты, закрытые ключи и запросы на подпись

Комбинированное поле (combobox) «Выберите токен:» на основном окне содержит список доступных СКЗИ для генерации ключевой пары. Если утилита генерации запроса запущена на платформе Windows и на ней установлены криптопровайдеры CSP с поддержкой российской криптографии, то в перечне доступных СКЗИ («Выберите токен:») будет определен и виртуальный токен «MS_CSP». Так что, если есть желание использовать криптопровайдер MS CSP, то он должен быть установлен в системе до запуска утилиты.

Читать также:  Подарочный сертификат на 2000 рублей картинка

SSL-сертификаты, закрытые ключи и запросы на подпись

Но это произойдет только в том случае, если токен не только подключен, но и находится в рабочем состоянии, т.е. проинициализирован. Проверить токен и, при необходимости, проинициализировать его, сменить PIN-код для доступа к нему и т.д. удобно утилитой p11conf :

SSL-сертификаты, закрытые ключи и запросы на подпись

SSL-сертификаты, закрытые ключи и запросы на подпись

Если выбранный токен не поддерживает выбранный тип ключевой пары, то будет выдано соответствующее сообщение:

SSL-сертификаты, закрытые ключи и запросы на подпись

Прежде чем перейти непосредственно к заполнению полей запроса необходимо определиться для каких целей нужен сертификат, т.е. указать «Роль сертификата». Сегодня таких ролей накопилось не один десяток:

SSL-сертификаты, закрытые ключи и запросы на подпись

И каждая роль связана с множеством различных OID-ов, включаемых в сертификат. Так, например, для доступа на портал Госуслуг необходимы следущие oid-ы:

OID-ы для других ролей (например, «Площадка Газпромбанк», «Потребитель спирта» и т.д.) можно найти в исходном коде утилиты (переменная oid_roles_bad, оператор:

).
Наличие такого количества oid-ов трудно понять. Речь идет о квалифицированных сертификатах, в которых присутствуют oid-ы ИНН, ОГРН, СНИЛС и т.п., которые однозначно идентифицируют и физическое лицо и юридическое лицо и, кажется, этого было бы достаточно для доступа на портал Госуслуг, да и на другие тоже. Но, Dura lex, sed lex — Закон суров, но это закон.

В поле «Наименование СКЗИ» необходимо указать название СКЗИ (токен/смарткарта, CSP), которое прописано в сертификате соответствия (не путать с сертификатом X509) ФСБ России или другом аналогичном документе, копию которого должна предоставляться в момент приобретения СКЗИ. В последующем значение этого поля войдет в сертификат.

Итак, определившись с СКЗИ и ключевой парой, можно приступать к заполнению электронного заявления/запроса на сертификат ключа проверки электронной подписи (СКПЭП):

SSL-сертификаты, закрытые ключи и запросы на подпись

Первым заполняется поле «Common Name», в которое заносится полное имя будущего владельца сертификата. Для физического лица это ФИО как в паспорте. Для юридического лица это наименование компании из ЕГРЮЛ. Эта информация для юридического лица автоматически будет продублирована в поле «Наименование организации» («O»):

SSL-сертификаты, закрытые ключи и запросы на подпись

При заполнении формы проверяется правильность заполнения полей ИНН, ОГРН, СНИЛС (при вводе не цифры поле становится красным, правильно заполненные поля становятся зеленоватыми), адреса электронной почты:

SSL-сертификаты, закрытые ключи и запросы на подпись

После заполнения всех полей запроса и нажатия кнопки «Finish» в итоге будет получен запрос на сертификат:

SSL-сертификаты, закрытые ключи и запросы на подпись

В процессе создания запроса будет сгенерирована ключевая пара на выбранном токене. При этом, если в качестве токена выбран виртуальный токен «MS_CSP», который, в свою очередь, поддерживает различные носители для хранения ключевой пары, будет предложено выбрать еще и конкретный носитель:

SSL-сертификаты, закрытые ключи и запросы на подпись

SSL-сертификаты, закрытые ключи и запросы на подпись

Закрытый ключ остается у заявителя на его токене, PIN-код (пароль) от которого необходимо хранить как зеницу ока Своего. А поскольку существует однозначное соответствие между открытым и закрытым ключами, то можно всегда проверить кому принадлежит запрос на сертификат, а в дальнейшем и сам сертификат, подпись под документом и т.д.

Теперь со всеми необходимыми документами, со сгенерированным запросом на флэшке можно идти в ближайший удостоверяющий центр и получать сертификат. Итак запрос поступает для выпуска сертификата в один из УЦ, созданных с учетом Федерального закона от 6 апреля 2011г. №63-ФЗ «Об электронной подписи»:

SSL-сертификаты, закрытые ключи и запросы на подпись

Запрос в УЦ пройдет стадии импорта, рассмотрения, утверждения и выпуска сертификата по данному запросу:

SSL-сертификаты, закрытые ключи и запросы на подпись

SSL-сертификаты, закрытые ключи и запросы на подпись

SSL-сертификаты, закрытые ключи и запросы на подпись

SSL-сертификаты, закрытые ключи и запросы на подпись

Ну и чтобы это была «броня» (Дайте мне такую БУМАЖКУ! Окончательная Бумажка, Броня. (Собачье Сердце к/ф)), подключим токен к браузеру Firefox с поддержкой российской криптографии и найдем выпущенный сертификат в личных сертификатах (в числе таких сертификатах, для которых на токене имеется закрытый ключ):

SSL-сертификаты, закрытые ключи и запросы на подпись

Утилита CreateCSRCAFL63 разработана на Tcl/Tk. Для доступа к криптографическим функциям MS CSP и токенов PKCS#11 разработан пакет cwapi, реализующий требования к библиотекам C со стороны Tcl. Реализовать эти требования не сложно, но порой отнимает много времени в силу своей рутинности. И тут на помощь приходит общедоступная утилита SWIG., которая позволяет создавать интерфейсные модули между библиотеками C/C++ и другими языками. Это не только Tcl, но и Java и другие. Проект очень хорошо документирован и имеет прекрасные примеры. Воспользоваться им не представляет труда. В нашем случае для получения интерфейсного модуля был написан простой исходный файл cwapi.i для утилиты swig:

В файле cwapi.h находятся описания функций из основного проекта cwapi:

$export SWIG_LIB=/usr/local/swig-3.0.12/Lib
$/usr/local/swig-3.0.12/swig -tcl8 -o cwapi_wrap.c cwapi_.i
$

в файле cwapi_wrap.c получим готовый интерфейсный модуль. Добавляем его в проект cwapi, пересобираем его и получаем новый пакет, который и используется в данной утилите.
Для получения дистрибутива очень удобно использовать утилиту freewrap, при этом библиотека cwapi также включается непосредственно в дистрибутив. Исходный код утилиты и дистрибутивы доступны для платформ Windows и Linux.

Хотелось бы упомянуть еще об одной утилите, а именно о tcl2c. Эта утилита «заварачивает» tcl/tk-код в C-код.

Для получения исполняемого кода достаточно выполнить команду:

$cc -o create_csr_С create_csr.c -ltcl -ltk
$

В состав дистрибутивов для платформы Linux включен и дистрибутив на языке С со статическим подключением пакета cwapi.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *