eSigner CodeSignTool을 사용하여 GitLab CI에서 자동 코드 서명을 수행하는 방법에 대한 자습서입니다.
CodeSignTool은 eSigner의 일부를 구성하는 보안 명령줄 유틸리티입니다. 클라우드 코드 서명 환경은 복잡하지 않은 방식으로 엔터프라이즈 코드 서명을 안전하고 효율적으로 수행할 수 있는 능력으로 소프트웨어 게시자와 개발자에게 혜택을 줍니다.
아래 샘플 워크플로는 eSigner를 사용하여 GitLab CI에서 서명되는 .NET DLL 코드를 보여줍니다.
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 서명 예제 워크플로
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 아티팩트를 빌드하는 작업의 정의입니다.
빌드 닷넷:
- 작업이 실행될 단계를 정의합니다.
단계: 빌드
- 사용해야 하는 이미지의 전체 이름을 입력합니다. 필요한 경우 레지스트리 부분을 포함해야 합니다.
이미지: mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- 작업 *이전*에 실행되어야 하는 스크립트를 정의하십시오. 전역 또는 작업별로 설정할 수 있습니다.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/패키지
- Runner가 실행하는 Shell 스크립트를 정의합니다. DLL 아티팩트 빌드
스크립트: - dotnet 빌드 dotnet/${PROJECT_NAME}.csproj -c 릴리스 - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll
- 성공할 경우 작업에 첨부해야 하는 파일 및 디렉토리 목록을 지정하십시오.
- '만료일' 속성을 사용하면 일정 시간이 지나면 파일을 삭제할 수 있습니다. 그 사용은 선택 사항입니다. 이것이 위의 예제 워크플로의 스크린샷에 이 속성이 표시되지 않는 이유입니다.
아티팩트: 경로: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5분
서명 단계 정의
다음은 dll 아티팩트에 서명하는 작업의 정의입니다.
서명-dotnet-아티팩트:
- 작업이 실행될 단계를 정의합니다.
무대: 사인
- 사용해야 하는 이미지의 전체 이름을 입력합니다. 필요한 경우 레지스트리 부분을 포함해야 합니다.
이미지: 도커:19.03.0
- 서비스를 정의합니다. 이것은 `image` 속성과 유사하지만 지정된 서비스를 `image` 컨테이너에 연결합니다.
서비스: - 도커:19.03.0-dind
- 특정 작업에 대한 환경 변수를 정의합니다.
- 위의 스크린샷에서 sign 명령은 환경 변수가 아니라 sign 스크립트에서 직접 정의되었습니다. 비다른 방법은 TravisCI로 올바르게 서명할 수 있습니다.
변수: 명령: "기호"
- 작업 *이전*에 실행되어야 하는 스크립트를 정의하십시오. 전역 또는 작업별로 설정할 수 있습니다.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/패키지
- Runner가 실행한 Shell 스크립트를 배치합니다. CodeSignTool Docker 이미지를 사용하여 .NET dll 아티팩트에 서명
스크립트: - 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 USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -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
- 작업이 성공할 경우 첨부되어야 하는 파일 및 디렉토리 목록을 지정하는 데 사용할 수 있는 스크립트를 작성하십시오.
아티팩트: 경로: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll 만료일: 1일
- 아티팩트가 로드되어야 하는 이전 단계의 작업 이름 목록을 지정하십시오.
종속성: - build-dotnet
SSL.com EV 코드 서명 인증서는 최고 수준의 유효성 검사를 통해 무단 변조 및 손상으로부터 코드를 보호하는 데 도움이 되며 최소한의 비용으로 사용할 수 있습니다. 연간 $ 249. 당신은 또한 수 EV 코드 서명 인증서를 대규모로 사용 eSigner를 사용하여 클라우드에서
빌드 단계 시작
저장소 만들기
아래 스크린샷과 같이 Gitlab의 명령줄 지침을 참조하십시오.
폴더 푸시
클릭하여 수행 단말기 메뉴에 이어서 새 터미널.
프로젝트를 푸시하려면 터미널에 푸시 스크립트를 입력하십시오.
빌드 버튼 클릭
파이프라인을 트리거한 후 빌드를 진행합니다.
빌드 성공 여부 확인
서명 단계 시작
아티팩트 서명을 진행합니다.
코드 서명 성공 여부 확인
이제 서명된 파일을 다운로드할 수 있습니다.
다음을 참조 할 수 있습니다. SSL.com 도커 이미지의 소스 코드를 포함하고 사용 방법을 설명하는 Github 리포지토리: https://github.com/SSLcom/ci-images
샘플 Gitlab CI 파이프라인
우리가 생성한 샘플 Gitlab CI 파이프라인을 확인하십시오. github.com/SSLcom/codesigner-gitlabci-sample기타 CI/CD 원격 서명 통합 가이드
- CircleCI와 클라우드 코드 서명 통합
- GitHub 작업과 Cloud Code Signing 통합
- Jenkins CI와 클라우드 코드 서명 통합
- Travis CI와 클라우드 코드 서명 통합
- Azure DevOps와 클라우드 코드 서명 통합
- BitBucket과 클라우드 코드 서명 통합
- CI/CD 서비스를 통한 클라우드 코드 서명 자동화
맞춤형 솔루션이 필요하십니까?
우리의 전문 지식과 XNUMX성급 지원 직원을 통해 맞춤형 솔루션 또는 엔터프라이즈 수준의 대량 서명 할인에 대해 귀하와 협력할 준비가 되어 있습니다. 아래 양식을 작성해 주시면 연락드리겠습니다.