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

Този урок показва как eSigner е интегриран с CircleCI за автоматизирано подписване на код.

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

SSL.com EV Подписване на код сертификатите помагат за защитата на вашия код от неоторизирано подправяне и компрометиране с най-високо ниво на валидиране и са достъпни само за малко $ 249 годишно. Можете също така да използвайте вашия EV сертификат за подписване на код в мащаб в облака с помощта на eSigner.

ПОРЪЧАЙ СЕГА

Променливи на околната среда

  • USERNAME: потребителско име на SSL.com акаунт. (задължително)
  • ПАРОЛА: парола за акаунт в SSL.com (задължително)
  • CREDENTIAL_ID: Идентификационен номер за подписване на сертификат. Ако credential_id е пропуснат и потребителят има само един сертификат за подписване на код на eSigner, CodeSignTool ще го използва по подразбиране. Ако потребителят има повече от един сертификат за подписване на код, този параметър е задължителен. (задължително)
  • TOTP_SECRET: OAuth TOTP Secret. Можете да получите достъп до подробна информация за https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Задължително)
  • ENVIRONMENT_NAME : среда „TEST“ или „PROD“. (задължително)

Входове

  • входен_път_файл: Път на кодов обект, който трябва да бъде подписан. (задължително)
  • път_изходна_директория: Директория, където ще бъдат записани обекти с подписан код. Ако output_path е пропуснат, файлът, указан в -file_path, ще бъде презаписан с подписания файл.

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

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

Във вашето работно пространство за подписване на код създайте a папка .circleci. Под него създайте a файл config.yml.

  1. Задайте CI версията
Версия: 2.1
 
  1.  Извиквайте задания чрез работни потоци. Работните потоци организират набор от задачи, които трябва да бъдат изпълнени. Задачите за този конвейер са конфигурирани по-долу

Виж: https://circleci.com/docs/2.0/configuration-reference/#workflows

работни процеси:
 
  1. Напишете името на работния процес.
  dotnet:
 
  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-bullseye

 

  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 проект или решение и всички негови зависимости.
      - изпълнение: име: Изграждане на Dotnet Project Команда: dotnet build dotnet/${PROJECT_NAME}.csproj -c Издаване

 

  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. Създайте променлива на средата
  • На екранната снимка по-горе командата за знак е дефинирана директно в скрипта за знак, а не под променливите на средата. бдругите методи могат да подписват правилно с CircleCI.
  • Променливите на средата се използват, за да направят пробите по-четими. В горната екранна снимка на примерния работен процес някои променливи не бяха включени по избор. Подписването може да продължи дори и при тези пропуски.  
    среда: ENVIRONMENT_NAME: PROD COMMAND: знак WORKSPACE: /home/circleci/project

 

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

 

  1. Име на артефакт за подписване
  • Стойността 'artifact-name' е опция за множество проекти Параметърът 'artifact-name' беше добавен, така че една и съща подписваща част да може да се използва за всички типове проекти. Тъй като примерът на екранната снимка е базиран на един проект, не беше необходимо да го включвате.
    параметри: име на артефакт: тип: низ по подразбиране: ''

 

  1. Дефинирайте докер изпълнител:

 За допълнителна справка вижте: https://circleci.com/docs/2.0/executor-types/

       Можете да посочите изображение от Dockerhub или да използвате едно от нашите удобни изображения от центъра за разработчици на CircleCI.

       Не забравяйте да актуализирате етикета на изображението на Docker по-долу до openjdk версията на вашето приложение.

       Списък с наличните изображения за удобство на CircleCI Docker е достъпен тук: 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. Прикачете към работното пространство, за да получите достъп до файла с артефакта
   - прикачване_работно пространство: в: /home/circleci/project

 

  1. Активирайте Docker за CodeSigner на Circle-CI
 - setup_remote_docker: име: Настройка на Remote Docker версия: 19.03.13 docker_layer_caching: true

 

  1. Изтеглете изображението на Codesigner Docker от регистъра на Github
        - изпълнете: име: Команда Docker Pull Image: | докер издърпване ghcr.io/sslcom/codesigner:последно изтегляне на докер алпийски: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 /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --мрежов хост --volumes-from codesign-in --volumes-from codesign- out -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -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/<< parameters.artifact-name >> ${ WORKSPACE}/artifacts/<< parameters.artifact-name >>

 

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

Създайте ново хранилище в командния ред

Копирайте компонентите на командата push от местоположението на вашия проект във вашия GitHub акаунт

Включете всички компоненти на push команди във вашия редактор

SSL.com 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-sample

Други ръководства за интегриране на CI/CD отдалечено подписване

Нуждаете се от персонализирани решения? 

С нашите експертни познания и петзвезден екип за поддръжка, ние сме готови и желаем да работим с вас по персонализирани решения или отстъпки за подписване на голям обем на ниво предприятие. Попълнете формата по-долу и ние ще се свържем с вас.

Абонирайте се за бюлетина на SSL.com

Не пропускайте нови статии и актуализации от SSL.com

Бъдете информирани и защитени

SSL.com е глобален лидер в киберсигурността, PKI и цифрови сертификати. Регистрирайте се, за да получавате най-новите новини от индустрията, съвети и съобщения за продукти от SSL.com.

Ще се радваме на вашите отзиви

Попълнете нашата анкета и ни кажете какво мислите за скорошната си покупка.