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

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

CodeSignTool — это утилита командной строки, которая подходит для подписания больших объемов и легко интегрируется с различными платформами CI/CD. Он является частью eSigner: нашей службы удаленной подписи, которая предлагает эффективный, безопасный и удобный подход к подписи корпоративного кода.

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

КУПИТЕ СЕРТИФИКАТ ПОДПИСАНИЯ КОДА SSL.COM EV

Создайте файл Jenkins и определите конвейер в редакторе кода.

конвейер { агент любые параметры { buildDiscarder (logRotator (numToKeepStr: "5")) disableConcurrentBuilds () }

Установите инструмент .NET в редакторе кода, настроив Jenkins.

Нажмите Управлять Дженкинсом на панели инструментов Jenkins.

Прокрутите страницу вниз и щелкните Глобальная конфигурация инструмента.

Прокрутите вниз и нажмите Установка пакета SDK для .NET.

Скопируйте значение для .NET SDK и вставьте его в редактор кода.

инструменты { dotnetsdk "DOTNET_CORE_3.1.24" }

Перейдите на plugins.jenkins.io и установите плагин .NET SDK.

Под Управлять Дженкинсом в личном кабинете проверьте Управление плагинами чтобы убедиться, что подключаемый модуль .NET SDK установлен.

Убедившись, что подключаемый модуль установлен, вернитесь к УСТАНОВКАМ .NET SDK и убедитесь, что установлены правильные сведения о версии и выпуске подключаемого модуля .NET SDK. Нажмите кнопку Сохранить .

Установите переменные среды в редакторе кода.

environment { USERNAME = учетные данные ('es-username') // имя пользователя учетной записи SSL.com. ПАРОЛЬ = учетные данные ('es-password') // пароль учетной записи SSL.com. CREDENTIAL_ID = учетные данные ('es-credential-id') // Идентификатор учетных данных для подписания сертификата. TOTP_SECRET = учетные данные ('es-totp-secret') // Секрет OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Имя среды. Для демо-счета это может быть «ТЕСТ», иначе это будет «ПРОД».}

Вы найдете значения для каждой переменной на панели инструментов Jenkins в разделе Безопасность> Управление Полномочия.

 

Задайте этапы создания каталога артефактов, извлечения образа докера, сборки .NET и подписи кода артефакта.

 

        1) Создайте каталог артефактов для хранения подписанных и неподписанных файлов артефактов.
 stage('Создать каталог артефактов') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Извлеките образ Codesigner Docker из реестра Github.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Создайте проект или решение dotnet и все его зависимости. После создания файла dll или exe скопируйте его в папку «packages» для подписи.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) На этом шаге созданные файлы DLL (артефакты) будут подписаны с помощью CodeSignTool.
stage('Подписать и сохранить артефакт DLL Dotnet Core') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- том ${WORKSPACE}/artifacts:/codesign/output -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner: последний знак -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts артефакты: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

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

КУПИТЕ СЕРТИФИКАТ ПОДПИСАНИЯ КОДА SSL.COM EV

Создайте репозиторий на Github

Скопируйте каждый из компонентов команды push на Github.

Напишите команды на новом терминале в редакторе кода, чтобы отправить код.

После отправки кода перейдите в свою учетную запись Github и скопируйте URL-ссылку вашего проекта.

Перейдите в свою учетную запись Jenkins и нажмите кнопку Создать работу ссылку.

Выберите Многоветвевой трубопровод, задайте имя для вашего проекта и нажмите кнопку OK .

Под Источники филиалов, наведите на идти и вставьте URL-ссылку вашего проекта Github.

Прокрутите вниз до Сканирование триггеров многоветвевого конвейера. Установите флажок для Периодически, если не запускать иначе. Вы можете выбрать 2 минут.

Нажмите Сохранить .

Вернитесь в свою учетную запись Jenkins, щелкните свой проект и подтвердите, запущен ли конвейер.

Нажмите на свой проект Jenkins и выберите Сканировать многоветвевой конвейер сейчас на панели управления.

Нажмите Консольный вывод

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

Весь сценарий

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

Определите конвейер

конвейер { агент любые параметры { buildDiscarder (logRotator (numToKeepStr: "5")) disableConcurrentBuilds () }

Установить инструменты сборки

инструменты { dotnetsdk "DOTNET_CORE_3.1.24" // https://plugins.jenkins.io/dotnet-sdk }

Создайте переменную среды

environment { USERNAME = учетные данные ('es-username') // имя пользователя учетной записи SSL.com. ПАРОЛЬ = учетные данные ('es-password') // пароль учетной записи SSL.com. CREDENTIAL_ID = учетные данные ('es-credential-id') // Идентификатор учетных данных для подписания сертификата. TOTP_SECRET = учетные данные ('es-totp-secret') // Секрет OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Имя среды. Для демо-счета это может быть «ТЕСТ», иначе это будет «ПРОД».}

Скрипт для этапов сборки и подписи

stages { // 1) Создать каталог артефактов для хранения подписанных и неподписанных файлов артефактов stage('Создать каталог артефактов') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Извлечь образ Docker Codesigner из реестра Github. его зависимости. // После создания файла dll или exe скопируйте его в папку «packages» для подписания Release/netcoreapp3/HelloWorld-3.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 0.0.1) На этом этапе созданные файлы DLL (артефакты) будут подписаны с помощью CodeSignTool. stage('Подписать и сохранить артефакт DLL Dotnet Core') { steps { sh 'docker run -i --rm --dns 4 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- том ${WORKSPACE}/artifacts:/codesign/output -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner: последний знак -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts артефакты: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Вы можете обратиться к SSL.com Репозиторий Github, который содержит исходные коды образа докера и описывает, как его использовать: https://github.com/SSLcom/ci-images 

Пример конвейера Дженкинса

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

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

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

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

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

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

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

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

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

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