CircleCI와 클라우드 코드 서명 통합

이 튜토리얼은 자동화된 코드 서명을 위해 eSigner가 CircleCI와 통합되는 방법을 보여줍니다.

eSigner는 코드 서명을 위한 SSL.com의 클라우드 환경입니다. 서명 키와 인증서는 SSL.com에 의해 클라우드에서 안전하게 호스팅되며 인터넷에 연결된 모든 장치에서 서명을 위해 액세스할 수 있으므로 eSigner는 엔터프라이즈 코드 서명을 위한 최고의 플랫폼 중 하나입니다. eSigner 툴킷에는 CodeSignTool이 포함되어 있습니다. 명령줄 유틸리티 EV 코드 서명 인증서를 제공하며 CircleCI를 포함한 다양한 CI/CD(지속적 통합/지속적 전달) 플랫폼에서 자동화된 서명 프로세스를 생성하는 데 이상적입니다. 

SSL.com EV 코드 서명 인증서는 최고 수준의 유효성 검사를 통해 무단 변조 및 손상으로부터 코드를 보호하는 데 도움이 되며 최소한의 비용으로 사용할 수 있습니다. 연간 $ 249. 당신은 또한 수 EV 코드 서명 인증서를 대규모로 사용 eSigner를 사용하여 클라우드에서

지금 주문하세요

환경 변수

  • 사용자 이름: SSL.com 계정 사용자 이름. (필수의)
  • PASSWORD: SSL.com 계정 비밀번호(필수)
  • CREDENTIAL_ID: 인증서 서명을 위한 자격 증명 ID입니다. credential_id가 생략되고 사용자에게 하나의 eSigner 코드 서명 인증서만 있는 경우 CodeSignTool은 기본적으로 이 인증서를 사용합니다. 사용자에게 둘 이상의 코드 서명 인증서가 있는 경우 이 매개변수는 필수입니다. (필수의)
  • TOTP_비밀: OAuth TOTP 비밀. 에 대한 자세한 정보에 액세스할 수 있습니다. https://www.ssl.com/how-to/automate-esigner-ev-code-signing (필수)
  • 환경_이름 : 'TEST' 또는 'PROD' 환경. (필수의)

입력

  • 입력_파일_경로: 서명할 코드 개체의 경로입니다. (필수의)
  • 출력_디렉터_경로: 서명된 코드 개체가 작성될 디렉터리입니다. output_path를 생략하면 -file_path에 지정된 파일을 서명된 파일로 덮어씁니다.

워크플로의 구성 요소 준비 (.NET 코드 DLL 서명)

  1. .circleci 폴더 만들기

코드 서명 작업 영역에서 .circleci 폴더. 그 아래에 생성 config.yml 파일.

  1. CI 버전 설정
버전 : 2.1
 
  1.  워크플로를 통해 작업을 호출합니다. 워크플로는 실행할 작업 집합을 조정합니다. 이 파이프라인에 대한 작업은 아래에 구성되어 있습니다.

참조 : https://circleci.com/docs/2.0/configuration-reference/#workflows

워크플로:
 
  1. 워크플로의 이름을 작성합니다.
  닷넷:
 
  1. 워크플로 내에서 실행할 작업을 정의합니다.
 작업: - 빌드 - 서명: 요구 사항: - 빌드
 

빌드 단계 정의

  1. 워크플로에서 나중에 호출할 작업을 정의합니다.

 (참조: https://circleci.com/docs/2.0/configuration-reference/#jobs)

작업: 빌드:

 

  1. 환경 변수 만들기
  • 환경 변수는 샘플을 더 읽기 쉽게 만드는 데 사용됩니다. 위의 서명 워크플로 예시 스크린샷에서 PROJECT_NAME, PROJECT_VERSION 및 DOTNET_VERSION은 선택적으로 생략되었습니다. 이러한 누락이 있더라도 서명은 계속 진행할 수 있습니다.  
  환경: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 작업 공간: /home/circleci/project

 

  1.  Docker 실행기 정의: (https://circleci.com/docs/2.0/executor-types/)

    # Dockerhub의 이미지를 지정하거나 CircleCI 개발자 허브의 Convenience Images 중 하나를 사용할 수 있습니다.

 도커: - 이미지: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. 작업에 대한 작업 디렉토리 배치
  작업 디렉터리: /home/circleci/project

 

  1. 작업에 단계 추가

    참조: https://circleci.com/docs/2.0/configuration-reference/#steps

  단계 :

 

  1.  워크플로에서 액세스할 수 있도록 소스 코드를 확인하세요.
    - 체크아웃

 

  1. 서명 및 서명되지 않은 아티팩트 파일을 저장할 아티팩트 디렉토리 생성
    - 실행: 이름: 아티팩트 디렉토리 작성 명령: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/패키지

 

  1.  dotnet 프로젝트 또는 솔루션 및 모든 종속성을 빌드합니다.
      - 실행: 이름: Dotnet 프로젝트 빌드 명령: dotnet build dotnet/${PROJECT_NAME}.csproj -c 릴리스

 

  1. 아티팩트 디렉토리에 아티팩트 복사
  • 이 서면 서명 예제 워크플로에서는 여러 프로젝트 유형이 생성되었습니다. 그렇기 때문에 하위 폴더를 만들어 서로 다른 프로젝트 형식의 파일을 보관했습니다. Dotnet 프로젝트용으로 'dotnet'이라는 하위 폴더가 생성되었습니다. 위의 데모 스크린샷에서는 'dotnet'이라는 하위 폴더를 만들 필요가 없었으므로 스크립트에 포함되지 않았습니다.
  - 실행: 이름: 아티팩트 복사 명령: | cp dotnet/bin/릴리스/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. 서명을 위해 아티팩트 디렉토리에 아티팩트 유지
  -persist_to_workspace: 루트: . 경로: - 패키지/*
 

서명 단계 정의

  1. 서명 작업 정의
 기호:

 

  1. 환경 변수 만들기
  • 위의 스크린샷에서 sign 명령은 환경 변수가 아니라 sign 스크립트에서 직접 정의되었습니다. 비다른 방법은 CircleCI로 올바르게 서명할 수 있습니다.
  • 환경 변수는 샘플을 더 읽기 쉽게 만드는 데 사용됩니다. 예제 워크플로의 위 스크린샷에서 일부 변수는 선택적으로 포함되지 않았습니다. 이러한 누락이 있더라도 서명은 계속 진행할 수 있습니다.  
    환경: ENVIRONMENT_NAME: PROD 명령: 서명 작업공간: /home/circleci/project

 

  1.     Circle-CI에 작업에 대한 작업 디렉터리 배치
 작업 디렉터리: /home/circleci/project

 

  1. 서명을 위한 아티팩트 이름
  • 'artifact-name' 값은 여러 프로젝트에 대한 옵션입니다. 모든 프로젝트 유형에 동일한 서명 부분을 사용할 수 있도록 'artifact-name' 매개변수가 추가되었습니다. 스크린샷의 예제는 단일 프로젝트를 기반으로 하므로 포함할 필요가 없습니다.
    매개변수: 아티팩트 이름: 유형: 문자열 기본값: ''

 

  1. 도커 실행기를 정의합니다.

 추가 참조는 다음을 참조하십시오. https://circleci.com/docs/2.0/executor-types/

       Dockerhub에서 이미지를 지정하거나 CircleCI의 개발자 허브에서 Convenience 이미지 중 하나를 사용할 수 있습니다.

       애플리케이션의 openjdk 버전으로 아래 Docker 이미지 태그를 업데이트해야 합니다.

       사용 가능한 CircleCI Docker Convenience 이미지 목록은 다음에서 확인할 수 있습니다. https://circleci.com/developer/images/image/cimg/openjdk

   도커: - 이미지: cimg/openjdk:17.0.3

 

  1. 작업에 단계 추가

      추가 참조는 다음을 참조하십시오. https://circleci.com/docs/2.0/configuration-reference/#steps

    단계 :

 

  1. 서명 및 서명되지 않은 아티팩트 파일을 저장할 아티팩트 디렉토리 생성
  - 실행: 이름: 아티팩트 디렉토리 작성 명령: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/패키지

 

  1. 아티팩트 파일에 액세스하기 위해 Workspace에 연결
   - attach_workspace: 위치: /home/circleci/project

 

  1. Circle-CI에서 CodeSigner용 Docker 활성화
 - setup_remote_docker: 이름: 원격 Docker 설치 버전: 19.03.13 docker_layer_caching: true

 

  1. Github 레지스트리에서 Codesigner Docker 이미지 가져오기
        - 실행: 이름: Docker Pull Image 명령: | 도커 풀 ghcr.io/sslcom/codesigner:최신 도커 풀 alpine:3.4

 

  1. CodeSignTool로 아티팩트가 서명될 단계를 작성하십시오.
 - 실행: 이름: 아티팩트 파일 서명 명령: | docker create -v /codesign/packages --name codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -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 ${COMMAND} -input_file_path=/codesign/packages/<< parameters.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parameters.artifact-name >> ${ WORKSPACE}/artifacts/<< parameters.artifact-name >>

 

  1. 워크플로에서 아티팩트를 업로드하는 단계를 작성하여 워크플로가 완료되면 작업 간에 데이터를 공유하고 데이터를 저장할 수 있습니다.
    - store_artifacts: 이름: 서명된 파일 업로드 경로: /home/circleci/project/artifacts/<< parameters.artifact-name >> 대상: << parameters.artifact-name >>
 

명령줄에서 새 저장소 만들기

GitHub 계정의 프로젝트 위치에서 푸시 명령 구성 요소를 복사합니다.

편집기에 모든 푸시 명령 구성 요소 포함

SSL.com EV 코드 서명 인증서는 최고 수준의 유효성 검사를 통해 무단 변조 및 손상으로부터 코드를 보호하는 데 도움이 되며 최소한의 비용으로 사용할 수 있습니다. 연간 $ 249. 당신은 또한 수 EV 코드 서명 인증서를 대규모로 사용 eSigner를 사용하여 클라우드에서

지금 주문하세요

GitHub에 통합된 저장소를 사용하여 CircleCI에 프로젝트 설정

모든 환경 변수 정의

프로젝트가 실행되는 동안 프로젝트 설정 버튼을 클릭한 다음 환경 변수를 클릭하여 변수를 정의합니다.

각 변수에 대한 값 배치

클릭 환경 변수 추가 버튼을 눌러 프로젝트에 필요한 모든 변수의 이름과 값을 추가합니다.

프로젝트가 빌드될 때까지 기다립니다.

작업 공간에 지속 클릭

작업 공간 아카이브가 성공적으로 업로드될 때까지 잠시 기다리십시오.

서명 버튼을 클릭하세요

원격 Docker가 설정될 때까지 기다립니다.

파일 크기에 따라 XNUMX분 이상 소요될 수 있습니다.

아티팩트가 서명될 때까지 기다립니다.

 유물 

클릭하면 유물, 성공적으로 코드 서명된 파일을 볼 수 있습니다. 또한 CircleCI에서 성공적인 코드 서명에 대한 알림을 받게 됩니다.

https://github.com/SSLcom/ci-images에서 도커 이미지의 소스 코드와 사용 방법을 설명하는 SSL.com Github 저장소를 참조할 수 있습니다.

샘플 CircleCI 파이프라인

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

기타 CI/CD 원격 서명 통합 가이드

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

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

SSL.com의 뉴스 레터 구독

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

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

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

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

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