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

Это руководство о том, как выполнять автоматическую подпись кода в GitLab CI с помощью eSigner CodeSignTool. 

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

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

Создайте 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.

сборка-дотнет:

 

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

 

  1. Поместите полное название изображения, которое следует использовать. Он должен содержать часть реестра, если это необходимо.
 изображение: mcr.microsoft.com/dotnet/sdk:3.1-bulseye

 

  1. Определите сценарии, которые должны выполняться *перед* заданием. Может быть установлен глобально или для каждого задания.
before_script: - mkdir -p ${CI_PROJECT_DIR}/артефакты - mkdir -p ${CI_PROJECT_DIR}/пакеты

 

  1. Определите сценарии оболочки, выполняемые 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. Укажите список файлов и каталогов, которые должны быть присоединены к заданию в случае его успешного выполнения.
  • 'истекает_вход' позволяет удалить файл через определенный промежуток времени. Его использование не является обязательным. Вот почему на снимке экрана приведенного выше примера рабочего процесса это свойство не показано.
артефакты: пути: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 минут
 

Определите стадию знака

Ниже приведено определение вашей работы по подписи артефакта dll.

знак-точка-артефакты:

 

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

 

  1. Поместите полное название изображения, которое следует использовать. Он должен содержать часть реестра, если это необходимо.
 изображение: докер: 19.03.0

 

  1. Дайте определение услугам. Это похоже на свойство image, но свяжет указанные сервисы с контейнером image.
сервисы: - докер: 19.03.0-dind

 

  1. Определите переменные среды для конкретных заданий.
  • На скриншоте выше команда sign была определена непосредственно в скрипте sign, а не в переменных среды. Бдругие методы могут корректно подписывать TravisCI.
  переменные: КОМАНДА: "знак"

 

  1. Определите сценарии, которые должны выполняться *перед* заданием. Может быть установлен глобально или для каждого задания.
  before_script: - mkdir -p ${CI_PROJECT_DIR}/артефакты - mkdir -p ${CI_PROJECT_DIR}/пакеты

 

  1. Поместите сценарии оболочки, выполняемые Runner. Подпишите артефакт .NET dll с помощью образа Docker CodeSignTool
скрипт: - docker pull ghcr.io/sslcom/codesigner:latest - docker run -i --rm --dns 8.8.8.8 --network host --volume ${CI_PROJECT_DIR}/packages:/codesign/examples --volume $ {CI_PROJECT_DIR}/artifacts:/codesign/output -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -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's EV Подписание кода сертификаты помогают защитить ваш код от несанкционированного вмешательства и компрометации благодаря высочайшему уровню проверки и доступны всего за $ 249 в год. Вы также можете используйте свой сертификат подписи кода EV в масштабе в облаке с помощью eSigner.

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

Начать этап сборки

Создать репозиторий

Обратитесь к инструкциям командной строки в Gitlab, как показано на снимке экрана ниже.

Нажмите вашу папку

Сделайте это, нажав Терминал в меню, а затем Новый Терминал.

Введите push-скрипт в своем терминале, чтобы отправить проект. 

Нажмите кнопку «Построить»

После запуска конвейера приступайте к сборке

Проверить успешность сборки  

Начать этап подписания

Приступить к подписанию артефакта

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

Теперь вы можете скачать подписанный файл

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

Пример Gitlab CI Pipeline

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

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

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

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

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

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

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

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

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

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