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

Това е урок за това как да направите автоматизирано подписване на код на GitLab CI с помощта на eSigner CodeSignTool. 

CodeSignTool е защитена помощна програма за команден ред, която е част от eSigner: нашата облачна среда за подписване на код, която облагодетелства издателите и разработчиците на софтуер със своя капацитет за безопасно и ефикасно извършване на подписване на корпоративен код по неусложнен начин.  Примерният работен процес по-долу показва .NET DLL код, който се подписва в GitLab CI с eSigner.

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, ще бъде презаписан с подписания файл.

Примерен работен процес за подписване на .NET код DLL

Създайте yml файл

Групирайте работните места на етапи. Всички задачи в един етап трябва да бъдат завършени, преди да се изпълни следващият етап.

етапи: - изграждане - знак
 

Дефинирайте променливите на средата глобално. Свойството на ниво работа отменя глобалните променливи.

  • Променливите на средата се използват, за да направят пробите по-четими. В горната екранна снимка на примерния работен процес PROJECT_NAME, PROJECT_VERSION и DOTNET_VERSION бяха пропуснати по избор. Подписването все още може да продължи с тези пропуски.  
  • Под ENVIRONMENT_NAME поставете „TEST“ за тестово подписване и „PROD“ за подписване на живо.
променливи: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
 

Определете Етап на изграждане

По-долу е дефиницията на вашата работа за изграждане на dll артефакт

build-dotnet:

 

  1. Определете на какъв етап ще се изпълнява заданието.
  етап: изграждане

 

  1. Поставете пълното име на изображението, което трябва да се използва. Трябва да съдържа частта за регистъра, ако е необходимо.
 изображение: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Дефинирайте скриптове, които трябва да се изпълняват *преди* заданието. Може да се задава глобално или за задание.
преди_скрипт: - mkdir -p ${CI_PROJECT_DIR}/артефакти - mkdir -p ${CI_PROJECT_DIR}/пакети

 

  1. Дефинирайте скриптове на Shell, изпълнявани от Runner. Изграждане на DLL артефакт
скрипт: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll

 

  1. Посочете списък с файлове и директории, които трябва да бъдат прикачени към заданието, ако то успее.
  • "expire_in' свойството позволява файлът да бъде изтрит след определен период от време. Използването му не е задължително. Ето защо екранната снимка на примерния работен процес по-горе не показва това свойство.
артефакти: пътища: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 минути
 

Определете етапа на знака

По-долу е дефиницията на вашата работа за подписване на dll артефакт

знак-дотнет-артефакти:

 

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

 

  1. Поставете пълното име на изображението, което трябва да се използва. Трябва да съдържа частта за регистъра, ако е необходимо.
 изображение: docker:19.03.0

 

  1. Дефинирайте услугите. Това е подобно на свойството `image`, но ще свърже посочените услуги към контейнера `image`.
услуги: - докер:19.03.0-dind

 

  1. Дефинирайте променливи на средата за конкретни задачи.
  • На екранната снимка по-горе командата за знак е дефинирана директно в скрипта за знак, а не под променливите на средата. бдруги методи могат да подписват правилно с TravisCI.
  променливи: COMMAND: "знак"

 

  1. Дефинирайте скриптове, които трябва да се изпълняват *преди* заданието. Може да се задава глобално или за задание.
  преди_скрипт: - mkdir -p ${CI_PROJECT_DIR}/артефакти - mkdir -p ${CI_PROJECT_DIR}/пакети

 

  1. Поставете скриптове на Shell, изпълнявани от Runner. Подпишете .NET dll артефакт с CodeSignTool Docker Image
скрипт: - изтегляне на докер ghcr.io/sslcom/codesigner:най-нови - изпълнение на докер -i --rm --dns 8.8.8.8 --мрежов хост --том ${CI_PROJECT_DIR}/пакети:/codesign/examples --том $ {CI_PROJECT_DIR}/artifacts:/codesign/output -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:последните ${COMMAND} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output

 

  1. Напишете скрипта, който може да се използва за указване на списък с файлове и директории, които трябва да бъдат прикачени към заданието, ако то успее.
артефакти: пътища: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 дни

 

  1. Посочете списък с имена на задачи от по-ранни етапи, от които артефактите трябва да бъдат заредени.
зависимости: - build-dotnet

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

ПОРЪЧАЙ СЕГА

Стартирайте етапа на изграждане

Създайте хранилище

Обърнете се към инструкциите на командния ред в Gitlab, както се вижда на екранната снимка по-долу

Натиснете папката си

Направете това, като щракнете терминал в менюто, последвано от Нов терминал.

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

Щракнете върху бутона Изграждане

След като задействате тръбопровода, продължете с изграждането

Проверете дали изграждането е успешно  

Започнете етапа на знаците

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

Потвърдете дали подписването на кода е успешно

Вече можете да изтеглите подписания файл

Можете да се обърнете към SSL.com Github хранилище, което съдържа изходните кодове на докер изображението и описва как да го използвате: https://github.com/SSLcom/ci-images 

Примерен тръбопровод на Gitlab CI

Вижте примерния конвейер на Gitlab CI, върху който сме създали github.com/SSLcom/codesigner-gitlabci-sample

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

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

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

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

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

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

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

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

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