Интеграция подписи облачного кода с CircleCI

В этом руководстве показано, как eSigner интегрируется с CircleCI для автоматической подписи кода.

eSigner — это облачная среда SSL.com для подписи кода. Ключи и сертификаты подписи надежно хранятся в облаке на SSL.com, и к ним можно получить доступ для подписи с любого устройства, подключенного к Интернету, что делает eSigner одной из лучших платформ для подписи корпоративного кода. Инструментарий eSigner включает CodeSignTool, который представляет собой утилита командной строки для Подпись кода EV сертификатов и идеально подходит для создания автоматизированных процессов подписи на различных платформах непрерывной интеграции/непрерывной доставки (CI/CD), включая CircleCI. 

SSL.com's EV Подписание кода сертификаты помогают защитить ваш код от несанкционированного вмешательства и компрометации благодаря высочайшему уровню проверки и доступны всего за $ 249 в год. Вы также можете используйте свой сертификат подписи кода EV в масштабе в облаке с помощью eSigner.

ЗАКАЗАТЬ СЕЙЧАС

Переменные среды

  • USERNAME: имя пользователя учетной записи SSL.com. (Необходимый)
  • PASSWORD: пароль учетной записи SSL.com (обязательно)
  • CREDENTIAL_ID: Идентификатор учетных данных для сертификата подписи. Если credential_id опущен и у пользователя есть только один сертификат подписи кода eSigner, CodeSignTool будет использовать его по умолчанию. Если у пользователя есть более одного сертификата подписи кода, этот параметр является обязательным. (Необходимый)
  • TOTP_SECRET: Секрет OAuth TOTP. Вы можете получить доступ к подробной информации о https://www.ssl.com/how-to/automate-esigner-ev-code-signing (обязательно)
  • ИМЯ_ОКРУЖАЮЩЕЙ СРЕДЫ : Среда 'TEST' или 'PROD'. (Необходимый)

входные

  • путь_входного_файла: Путь к подписываемому объекту кода. (Необходимый)
  • выходной_каталог_путь: Каталог, в который будут записаны подписанные объекты кода. Если output_path опущен, файл, указанный в -file_path, будет перезаписан подписанным файлом.

Подготовьте компоненты рабочего процесса (Подписание DLL кода .NET)

  1. Создайте папку .circleci

В рабочей области для подписи кода создайте папка .circleci. Под ним создайте файл config.yml.

  1. Установите версию CI
версия: 2.1
 
  1.  Вызов заданий через рабочие процессы. Рабочие процессы организуют набор выполняемых заданий. Задания для этого пайплайна настроены ниже

См.: https://circleci.com/docs/2.0/configuration-reference/#workflows

рабочие процессы:
 
  1. Напишите название рабочего процесса.
  сеть:
 
  1. Внутри рабочего процесса вы определяете задания, которые хотите запустить.
 задания: - построить - подписать: требует: - построить
 

Определите этап сборки

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

 (См.: https://circleci.com/docs/2.0/configuration-reference/#jobs.)

вакансии: построить:

 

  1. Создайте переменную среды
  • Переменные среды используются, чтобы сделать образцы более читабельными. На приведенном выше снимке экрана примера рабочего процесса подписи PROJECT_NAME, PROJECT_VERSION и DOTNET_VERSION были опущены. Подписание может продолжаться даже с этими упущениями.  
  среда: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WORKSPACE: /home/circleci/project

 

  1.  Определите исполнителя Docker: (https://circleci.com/docs/2.0/executor-types/)

    # Вы можете указать образ из Dockerhub или использовать один из наших удобных образов из Центра разработчиков CircleCI.

 докер: - образ: mcr.microsoft.com/dotnet/sdk:3.1-bulseye

 

  1. Поместите рабочий каталог для задания
  рабочий_каталог: /home/circleci/project

 

  1. Добавьте шаги к заданию

    См.: https://circleci.com/docs/2.0/configuration-reference/#steps.

  действия:

 

  1.  Ознакомьтесь с исходным кодом, чтобы рабочий процесс мог получить к нему доступ.
    - проверить

 

  1. Создайте каталог артефактов для хранения подписанных и неподписанных файлов артефактов.
    - выполнить: имя: Создать каталог артефактов команда: | mkdir -p ${WORKSPACE}/артефакты mkdir -p ${WORKSPACE}/packages

 

  1.  Создайте проект или решение dotnet и все его зависимости.
      - run: name: Build Dotnet Project Команда: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Скопируйте артефакт в каталог артефактов
  • В этом письменном примере рабочего процесса подписания было создано несколько типов проектов. Вот почему файлы разных типов проектов хранились путем создания подпапок. Подпапка с именем «dotnet» была создана для проектов Dotnet. На приведенном выше демонстрационном снимке экрана нет необходимости создавать подпапку с именем «dotnet», поэтому она не была включена в сценарий.
  - запустить: имя: Копировать артефакты команда: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Сохраните артефакт в каталоге артефактов для подписи.
  - persist_to_workspace: root: . пути: - пакеты/*
 

Определите этап подписания

  1. Определить задание подписи
 подписать:

 

  1. Создайте переменную среды
  • На скриншоте выше команда sign была определена непосредственно в скрипте sign, а не в переменных среды. Бдругие методы могут правильно подписывать с помощью CircleCI.
  • Переменные среды используются, чтобы сделать образцы более читабельными. На приведенном выше снимке экрана примера рабочего процесса некоторые переменные могут быть не включены. Подписание может продолжаться даже с этими упущениями.  
    среда: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project

 

  1.     Поместите рабочий каталог для задания на Circle-CI
 рабочий_каталог: /home/circleci/project

 

  1. Имя артефакта для подписи
  • Значение «имя артефакта» является опцией для нескольких проектов. Параметр «имя артефакта» был добавлен, чтобы одна и та же подписывающая часть могла использоваться для всех типов проектов. Поскольку пример на скриншоте основан на одном проекте, его не нужно было включать.
    параметры: имя-артефакта: тип: строка по умолчанию: ''

 

  1. Определите исполнителя докера:

 Для дополнительной справки см.: https://circleci.com/docs/2.0/executor-types/

       Вы можете указать образ из Dockerhub или использовать один из наших удобных образов из Центра разработчиков CircleCI.

       Обязательно обновите тег изображения Docker ниже до версии openjdk вашего приложения.

       Список доступных образов CircleCI Docker Convenience доступен здесь: https://circleci.com/developer/images/image/cimg/openjdk

   докер: - образ: cimg/openjdk:17.0.3

 

  1. Добавьте шаги к заданию

      Для дополнительной справки см.: https://circleci.com/docs/2.0/configuration-reference/#steps

    действия:

 

  1. Создайте каталог артефактов для хранения подписанных и неподписанных файлов артефактов.
  - выполнить: имя: Создать каталог артефактов команда: | mkdir -p ${WORKSPACE}/артефакты mkdir -p ${WORKSPACE}/packages

 

  1. Присоединитесь к рабочей области, чтобы получить доступ к файлу артефакта
   - attach_workspace: по адресу: /home/circleci/project

 

  1. Включить Docker для CodeSigner в Circle-CI
 - setup_remote_docker: name: Версия Setup Remote Docker: 19.03.13 docker_layer_caching: true

 

  1. Извлечь образ Codesigner Docker из реестра Github
        - запустить: имя: команда Docker Pull Image: | docker pull ghcr.io/sslcom/codesigner:последняя версия docker pull alpine:3.4

 

  1. Напишите шаг, на котором артефакт будет подписан с помощью CodeSignTool.
 - запустить: имя: Подписать файл артефакта команда: | docker create -v /codesign/packages --name codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< параметры.имя-артефакта >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --сетевой хост --volumes-from codesign-in --volumes-from codesign- out -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest ${COMMAND} -input_file_path=/codesign/packages/<<parameters.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<<parameter.artifact-name >> ${ WORKSPACE}/artifacts/<< параметры.имя-артефакта >>

 

  1. Напишите шаг для загрузки вашего артефакта из вашего рабочего процесса, что позволит вам обмениваться данными между заданиями и сохранять данные после завершения рабочего процесса.
    - store_artifacts: имя: Путь для загрузки подписанных файлов: /home/circleci/project/artifacts/<< имя_параметра_артефакта >> пункт назначения: <<имя_параметра_артефакта >>
 

Создайте новый репозиторий в командной строке

Скопируйте компоненты команды push из расположения вашего проекта в вашей учетной записи GitHub.

Включите все компоненты команды push в свой редактор.

SSL.com's EV Подписание кода сертификаты помогают защитить ваш код от несанкционированного вмешательства и компрометации благодаря высочайшему уровню проверки и доступны всего за $ 249 в год. Вы также можете используйте свой сертификат подписи кода EV в масштабе в облаке с помощью eSigner.

ЗАКАЗАТЬ СЕЙЧАС

Настройте проект на CircleCI, используя репозиторий, интегрированный в GitHub.

Определите все переменные среды

Во время работы проекта нажмите кнопку «Настройки проекта», а затем «Переменные среды», чтобы определить переменные.

Поместите значения для каждой переменной

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

Подождите, пока проект будет построен

Щелкните Сохранение в рабочей области.

Кратковременно подождите, пока архив рабочей области будет успешно загружен.

Нажмите кнопку подписи

Подождите, пока Remote Docker будет настроен.

Это может занять больше минуты, в зависимости от размера файла.

Подождите, пока артефакты будут подписаны

Нажмите Артефакты таб

Если вы щелкните Артефакты, вы сможете увидеть файл, код которого вы успешно подписали. Вы также будете уведомлены CircleCI об успешном подписании кода.

Вы можете обратиться к репозиторию SSL.com Github, который содержит исходные коды образа докера и описывает, как его использовать: https://github.com/SSLcom/ci-images.

Пример конвейера CircleCI

Ознакомьтесь с образцом конвейера CircleCI, который мы создали на github.com/SSLcom/codesigner-circleci-образец

Другие руководства по интеграции удаленной подписи CI/CD

Нужны индивидуальные решения? 

Благодаря нашим экспертным знаниям и пятизвездочному персоналу службы поддержки мы готовы работать с вами над индивидуальными решениями или над скидками на подписание крупных объемов на уровне предприятия. Заполните форму ниже, и мы свяжемся с вами.

Подпишитесь на рассылку новостей SSL.com

Не пропустите новые статьи и обновления с SSL.com

Будьте в курсе и будьте в безопасности

SSL.com является мировым лидером в области кибербезопасности, PKI и цифровые сертификаты. Подпишитесь, чтобы получать последние новости отрасли, советы и анонсы продуктов от SSL.com.

Мы будем рады вашим отзывам

Пройдите наш опрос и поделитесь с нами своими мыслями о своей недавней покупке.