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

Това е ръководство за това как да направите автоматизирано подписване на код на Jenkins с помощта на eSigner CodeSignTool.

CodeSignTool е помощна програма за команден ред, която е подходяща за подписване на голям обем и безпроблемно се интегрира с различни CI/CD платформи. Той е част от eSigner: нашата услуга за отдалечено подписване, която предлага ефективен, сигурен и удобен за потребителя подход за подписване на корпоративни кодове.

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

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

Създайте файл на Дженкинс и дефинирайте конвейера във вашия редактор на код

тръбопровод { агент всякакви опции { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds()}

Задайте инструмента .NET на вашия редактор на код, като конфигурирате Jenkins

Щракнете върху Управлявай Дженкинс на таблото за управление на Jenkins.

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

Превъртете надолу и щракнете Инсталации на .NET SDK.

Копирайте стойността за .NET SDK и я поставете във вашия редактор на код.

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

Отидете на plugins.jenkins.io и инсталирайте приставката .NET SDK

Под Управлявай Дженкинс на таблото си за управление, проверете Управление на приставки за да потвърдите дали приставката за .NET SDK е инсталирана.

След като потвърдите, че приставката е инсталирана, върнете се към .NET SDK ИНСТАЛАЦИИ и се уверете, че са зададени правилната версия и подробности за изданието на .NET SDK приставката. Продължете да щракнете върху Save бутон.

Задайте променливите на средата във вашия редактор на код

среда { ПОТРЕБИТЕЛСКО ИМЕ = идентификационни данни ('es-username') // потребителско име на SSL.com акаунт. ПАРОЛА = идентификационни данни ('es-парола') // Парола за SSL.com акаунт. CREDENTIAL_ID = идентификационни данни ('es-credential-id') // Идентификационен номер на удостоверение за подписване на сертификат. TOTP_SECRET = идентификационни данни ('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL Име на среда .com. За демо акаунт може да бъде „TEST“, в противен случай ще бъде „PROD“ }

Ще намерите стойностите за всяка променлива на таблото за управление на Jenkins под Сигурност> Управление Акредитивни писма.

 

Задайте етапите за създаване на директория с артефакти, изтегляне на докер изображение, изграждане на .NET и код, подписващ артефакта

 

        1) Създайте директория за артефакти за съхраняване на подписани и неподписани файлове с артефакти.
 stage('Създаване на директория с артефакти') { стъпки { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Изтеглете изображението на Codesigner Docker от регистъра на Github.
stage('Docker Pull Image') { стъпки { 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('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- том ${WORKSPACE}/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:последен знак -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts артефакти: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

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

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

Създайте репо Github

Копирайте всеки от компонентите на командата push в Github.

Напишете командите на нов терминал на вашия редактор на код, за да натиснете кода.

След като натиснете кода, отидете във вашия Github акаунт и копирайте URL връзката на вашия проект.

Продължете към вашия акаунт в Jenkins и щракнете върху Създайте работа връзка.

Изберете Многоразклонен тръбопровод, задайте името на вашия проект и щракнете върху OK бутон.

Под Източници на клоновеизберете отивам и поставете URL връзката на вашия проект в Github.

Превъртете надолу до Сканиране на задействания на многоразклонен тръбопровод. Поставете отметка в квадратчето за Периодично, ако не е друго, стартирайте. Можете да изберете 2 минути.

Щракнете върху Save бутон.

Върнете се в акаунта си в Jenkins, щракнете върху вашия проект и потвърдете дали тръбопроводът е започнал

Кликнете върху вашия проект на Jenkins и изберете Сканирайте многоразклонения тръбопровод сега на таблото за управление.

Кликнете Конзолен изход

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

Целият скрипт

Забележка: Уверете се, че сте коригирали печатни грешки или грешни прекъсвания на редове в скрипта, така че процесът на подписване да протича гладко.

Определете тръбопровода

тръбопровод { агент всякакви опции { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds()}

Инсталирайте инструменти за изграждане

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

Създайте променлива на средата

среда { ПОТРЕБИТЕЛСКО ИМЕ = идентификационни данни ('es-username') // потребителско име на SSL.com акаунт. ПАРОЛА = идентификационни данни ('es-парола') // Парола за SSL.com акаунт. CREDENTIAL_ID = идентификационни данни ('es-credential-id') // Идентификационен номер на удостоверение за подписване на сертификат. TOTP_SECRET = идентификационни данни ('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL Име на среда .com. За демо акаунт може да бъде „TEST“, в противен случай ще бъде „PROD“ }

Скрипт за етапите на изграждане и подписване

етапи { // 1) Създаване на директория с артефакти за съхраняване на подписани и неподписани файлове с артефакти stage('Създаване на директория с артефакти') { стъпки { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Изтеглете Codesigner Docker Image от Github Registry 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('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- том ${WORKSPACE}/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:последен знак -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

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

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

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

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

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

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

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

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

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

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