Jenkins CI와 클라우드 코드 서명 통합

eSigner CodeSignTool을 사용하여 Jenkins에서 자동화된 코드 서명을 수행하는 방법에 대한 가이드입니다.

CodeSignTool은 대용량 서명에 적합하고 다양한 CI/CD 플랫폼과 원활하게 통합되는 명령줄 유틸리티입니다. eSigner의 일부를 구성합니다. 엔터프라이즈 코드 서명에 대한 효율적이고 안전하며 사용자 친화적인 접근 방식을 제공하는 원격 서명 서비스입니다.

SSL.com EV 코드 서명 인증서 최고 수준의 유효성 검사를 통해 무단 변조 및 손상으로부터 코드를 보호하고 최소 비용으로 사용할 수 있습니다. 연간 $ 249.

SSL.COM EV 코드 서명 인증서 구입

Jenkins 파일 생성 및 코드 편집기에서 파이프라인 정의

파이프라인 { 에이전트 모든 옵션 { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Jenkins를 구성하여 코드 편집기에서 .NET 도구 설정

클릭 젠킨스 관리 Jenkins 대시보드의 탭.

페이지를 아래로 스크롤하고 전역 도구 구성을 클릭합니다.

아래로 스크롤하여 클릭하십시오. .NET SDK 설치.

.NET SDK의 값을 복사하여 코드 편집기에 붙여넣습니다.

도구 { dotnetsdk "DOTNET_CORE_3.1.24" }

plugins.jenkins.io로 이동하여 .NET SDK 플러그인을 설치합니다.

$XNUMX Million 미만 젠킨스 관리 대시보드에서 확인 플러그인 관리 .NET SDK 플러그인이 설치되었는지 확인합니다.

플러그인이 설치되었는지 확인한 후 .NET SDK 설치로 돌아가서 .NET SDK 플러그인의 올바른 버전 및 릴리스 세부 정보가 설정되었는지 확인하십시오. 다음을 클릭하세요. 찜하기 버튼을 클릭합니다.

코드 편집기에서 환경 변수 설정

environment { USERNAME = credentials('es-username') // SSL.com 계정 사용자 이름. PASSWORD = credentials('es-password') // SSL.com 계정 비밀번호. CREDENTIAL_ID = credentials('es-credential-id') // 인증서 서명을 위한 자격 증명 ID입니다. TOTP_SECRET = 자격 증명('es-totp-secret') // OAuth TOTP 비밀(https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 환경 이름. 데모 계정의 경우 'TEST'일 수 있으며 그렇지 않으면 'PROD'가 됩니다. }

Jenkins 대시보드에서 각 변수의 값을 찾을 수 있습니다. 보안> 관리 신임장.

 

아티팩트 디렉토리 생성, 도커 이미지 가져오기, .NET 빌드 및 아티팩트 코드 서명 단계 설정

 

        1) 서명된 아티팩트 파일과 서명되지 않은 아티팩트 파일을 저장할 아티팩트 디렉토리를 만듭니다.
 stage('아티팩트 디렉토리 생성') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Github 레지스트리에서 Codesigner Docker 이미지를 가져옵니다.
stage('도커 풀 이미지') { 단계 { sh '도커 풀 ghcr.io/sslcom/codesigner:latest' } }
        3) dotnet 프로젝트 또는 솔루션 및 모든 종속성을 빌드합니다. dll 또는 exe 파일이 생성된 후 서명을 위해 'packages' 폴더에 복사합니다.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c 릴리스' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) 생성된 DLL(artifact) 파일을 CodeSignTool로 서명하는 단계입니다.
stage('Dotnet Core DLL 아티팩트 서명 및 저장') { 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:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } 게시 { 항상 { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

SSL.com EV 코드 서명 인증서 최고 수준의 유효성 검사를 통해 무단 변조 및 손상으로부터 코드를 보호하고 최소 비용으로 사용할 수 있습니다. 연간 $ 249.

SSL.COM EV 코드 서명 인증서 구입

Github 리포지토리 만들기

Github에서 각 푸시 명령 구성 요소를 복사합니다.

코드 편집기의 새 터미널에 명령을 작성하여 코드를 푸시합니다.

코드를 푸시한 후 Github 계정으로 이동하여 프로젝트의 URL 링크를 복사합니다.

Jenkins 계정으로 이동하여 직업 만들기 링크를 클릭하십시오.

왼쪽 메뉴에서 멀티브랜치 파이프라인, 프로젝트 이름을 설정하고 OK 버튼을 클릭합니다.

$XNUMX Million 미만 분기 소스, 고르다 힘내 Github 프로젝트의 URL 링크를 붙여넣습니다.

아래로 스크롤 다중 분기 파이프라인 트리거 스캔. 에 대한 확인란을 선택하십시오. 달리 실행되지 않는 경우 주기적으로. 당신은 선택할 수 있습니다 2 분.

클릭 찜하기 버튼을 클릭합니다.

Jenkins 계정으로 돌아가서 프로젝트를 클릭하고 파이프라인이 시작되었는지 확인합니다.

Jenkins 프로젝트를 클릭하고 선택하십시오. 지금 멀티브랜치 파이프라인 스캔 대시 보드에서.

 콘솔 출력

아래로 스크롤하여 코드 서명이 성공했는지 확인합니다.

전체 스크립트

참고: 서명 프로세스가 원활하게 실행되도록 스크립트의 오타나 잘못된 줄 바꿈을 수정해야 합니다.

파이프라인 정의

파이프라인 { 에이전트 모든 옵션 { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

빌드 도구 설치

도구 { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

환경 변수 만들기

environment { USERNAME = credentials('es-username') // SSL.com 계정 사용자 이름. PASSWORD = credentials('es-password') // SSL.com 계정 비밀번호. CREDENTIAL_ID = credentials('es-credential-id') // 인증서 서명을 위한 자격 증명 ID입니다. TOTP_SECRET = 자격 증명('es-totp-secret') // OAuth TOTP 비밀(https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 환경 이름. 데모 계정의 경우 'TEST'일 수 있으며 그렇지 않으면 'PROD'가 됩니다. }

빌드 및 서명 단계용 스크립트

stages { // 1) 서명 및 서명되지 않은 아티팩트 파일 저장을 위한 아티팩트 디렉터리 생성 stage('아티팩트 디렉터리 만들기') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Github Registry에서 Codesigner Docker 이미지 가져오기 stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) dotnet 프로젝트 또는 솔루션 빌드 및 모든 그것의 의존성. // dll 또는 exe 파일 생성 후 'packages' 폴더에 복사하여 서명 단계('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('Dotnet Core DLL 아티팩트 서명 및 저장') { 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:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } 게시 { 항상 { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
다음을 참조 할 수 있습니다. SSL.com 도커 이미지의 소스 코드를 포함하고 사용 방법을 설명하는 Github 리포지토리: https://github.com/SSLcom/ci-images 

샘플 Jenkins 파이프라인

우리가 생성한 샘플 Jenkins 파이프라인을 확인하십시오. github.com/SSLcom/codesigner-jenkins-sample

기타 원격 서명 통합 가이드

맞춤형 솔루션이 필요하십니까? 

우리의 전문 지식과 XNUMX성급 지원 직원을 통해 맞춤형 솔루션 또는 엔터프라이즈 수준의 대량 서명 할인에 대해 귀하와 협력할 준비가 되어 있습니다. 아래 양식을 작성해 주시면 연락드리겠습니다.

SSL.com의 뉴스 레터 구독

SSL.com의 새로운 기사 및 업데이트를 놓치지 마십시오

최신 정보를 얻고 보안을 유지하세요

SSL.com 사이버 보안 분야의 글로벌 리더입니다. PKI 그리고 디지털 인증서. 최신 업계 뉴스, 팁, 제품 공지 사항을 받아보려면 등록하세요. SSL.com.

우리는 귀하의 피드백을 환영합니다

설문조사에 참여하여 최근 구매에 대한 의견을 알려주세요.