GitHub 작업과 Cloud Code Signing 통합

이 가이드 문서는 CI/CD(지속적 통합/지속적 전달) 설정에서 자동화된 코드 서명을 위해 eSigner가 GitHub Actions와 통합되는 방법을 보여줍니다.

eSigner는 USB 토큰이나 기타 특수 하드웨어 없이 엔터프라이즈 코드 서명을 수행할 수 있도록 전 세계 소프트웨어 개발자가 신뢰하는 클라우드 기반 서명 플랫폼입니다.  eSigner의 구성 요소 중 하나는 CodeSignTool입니다. 코드 서명을 자동화하려는 개발자에게 매우 효과적인 개인 정보 기반 명령줄 유틸리티입니다.  다음 섹션에서는 eSigner CodeSignTool을 사용하여 GitHub 작업에서 Java 코드(Maven)에 서명하는 방법을 보여줍니다.

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

지금 주문하세요

용법

- 이름: CodeSignTool로 아티팩트 서명

  용도 : sslcom/actions-codesigner@develop

  와:

  •      CodeSignTool 명령:

     - get_credential_ids: 사용자와 연결된 eSigner 자격 증명 ID 목록을 출력합니다.

     - credential_info: 자격 증명 ID와 관련된 키 및 인증서 정보를 출력합니다.

     - sign: 서명 및 타임 스탬프 코드 개체입니다.

     - batch_sign: 하나의 OTP로 여러 코드 객체에 서명하고 타임 스탬프합니다.

     - hash: 나중에 batch_hash_sign 명령과 함께 사용하기 위해 해시를 미리 계산합니다.

     - batch_sign_hash: 해시 명령으로 미리 계산된 해시에 서명합니다.

        명령: 기호

 

  • SSL.com 계정 사용자 이름.

         username: ${{secrets.ES_USERNAME}}

  •  SSL.com 계정 비밀번호.

         password: ${{secrets.ES_PASSWORD}}

  • 인증서 서명을 위한 자격 증명 ID입니다.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • 서명할 코드 개체의 경로입니다.

          file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar

  • 서명된 코드 개체가 작성될 디렉터리입니다.

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

입력

  • 사용자 이름: SSL.com 계정 사용자 이름. (필수의)
  • 암호: SSL.com 계정 비밀번호(필수)
  • 자격 증명_ID: 인증서 서명을 위한 자격 증명 ID입니다. credential_id가 생략되고 사용자에게 하나의 eSigner 코드 서명 인증서만 있는 경우 CodeSignTool은 기본적으로 이 인증서를 사용합니다. 사용자에게 둘 이상의 코드 서명 인증서가 있는 경우 이 매개변수는 필수입니다. (필수의)
  • totp_secret: OAuth TOTP 비밀. 에 대한 자세한 정보에 액세스할 수 있습니다. https://www.ssl.com/how-to/automate-esigner-ev-code-signing (필수)
  • 파일 경로: 서명할 코드 개체의 경로입니다. (필수의)
  • 출력 _ 경로: 서명된 코드 개체가 작성될 디렉터리입니다. output_path를 생략하면 -file_path에 지정된 파일을 서명된 파일로 덮어씁니다.

Java 코드(Maven) JAR 서명 예제 워크플로

워크플로의 구성 요소 준비

  1. 편집기에 Github 폴더를 만듭니다. 폴더에 워크플로를 포함하고 폴더 아래에 yml 파일을 만듭니다.
    1. 프로젝트 이름과 관련된 워크플로 유형
    이름: Maven 빌드 및 서명
     
    1. 푸시 시 이 워크플로 트리거
    켜기: 푸시
     
    1. 환경 변수 만들기
    • 환경 변수는 샘플을 더 읽기 쉽게 만드는 데 사용됩니다. 예제 워크플로의 위 스크린샷에서 PROJECT_NAME, PROJECT_VERSION 및 MAVEN_VERSION은 선택적으로 생략되었습니다. 이러한 누락이 있더라도 서명은 계속 진행할 수 있습니다.
    환경: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. 편집기에서 작업 정의
    작업: 빌드 및 서명 jar:
     
    1. Ubuntu Runner에서 작업 실행
        실행: 우분투 최신
     
    1. 이름을 만듭니다. 워크플로가 실행될 때 기록되는 이름입니다.
      이름: Maven이 있는 Java의 CodeSigner
     

소스 코드를 확인하고 Java 및 Maven 환경을 설정하고 Artifact Directory를 만드는 단계를 간략하게 설명합니다.

  1) 워크플로가 접근할 수 있도록 소스 코드를 확인합니다.

   단계: - 용도: actions/checkout@v2
 

  2) 워크플로에서 사용할 Java 및 Maven 환경을 설정합니다.

    - 이름: Maven 설치 및 Java 사용: s4u/setup-maven-action@v1.3.1 with: java-version: '${{env.JAVA_VERSION}}' maven-version: '${{env.MAVEN_VERSION}}'

 

      3) 서명된 아티팩트 파일과 서명되지 않은 아티팩트 파일을 저장할 아티팩트 디렉토리 생성

 - 이름: 디렉토리 쉘 생성: bash 실행: | mkdir ${GITHUB_WORKSPACE}/artifacts mkdir ${GITHUB_WORKSPACE}/패키지

 

      4) maven 프로젝트 또는 솔루션 및 모든 종속성을 빌드합니다.

      jar 파일 생성 후 서명을 위해 'packages' 폴더에 복사

  • 이 서면 서명 예제 워크플로에서는 여러 프로젝트 유형이 생성되었습니다. 그렇기 때문에 하위 폴더를 만들어 서로 다른 프로젝트 형식의 파일을 보관했습니다. Java 프로젝트용으로 'java'라는 하위 폴더가 생성되었습니다. 위의 데모 스크린샷에서는 'java'라는 하위 폴더를 만들 필요가 없었으므로 스크립트에 포함되지 않았습니다.
 - 이름: Java 프로젝트 셸 빌드: bash 실행: | mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. 항아리
 

서명 및 업로드 작업 단계 개요

  1. 서명 작업은 생성된 JAR(아티팩트) 파일을 CodeSignTool로 서명하는 단계입니다.
 - 이름: Sign Artifact 사용: sslcom/actions-codesigner@develop with:

           서명 및 타임스탬프 코드 개체입니다.

명령: 기호

           SSL.com 계정 사용자 이름.

사용자 이름: ${{secrets.ES_USERNAME}}

           SSL.com 계정 비밀번호.

비밀번호: ${{secrets.ES_PASSWORD}}

           인증서 서명을 위한 자격 증명 ID입니다.

credential_id: ${{비밀.CREDENTIAL_ID}}

           OAuth TOTP 비밀(https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret: ${{비밀.ES_TOTP_SECRET}}

           서명할 코드 개체의 경로입니다. (DLL, JAR, EXE, MSI 파일 vb… )

  파일 경로: ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           서명된 코드 개체가 작성될 디렉터리입니다.

output_path: ${GITHUB_WORKSPACE}/아티팩트

 

  1. 업로드 작업은 워크플로의 아티팩트가 업로드되어 워크플로가 완료되면 작업 간에 데이터를 공유하고 데이터를 저장할 수 있는 단계입니다.
 - 이름: 서명된 파일 업로드 사용: actions/upload-artifact@v2 with: name: ${{env.PROJECT_NAME}}.jar 경로: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Github Marketplace에서 빌드 아티팩트 업로더 받기

코딩 스크립트 검토

buld, sign 및 업로드 작업에 대한 전체 코딩 스크립트는 아래 이미지와 같아야 합니다. 서명 과정이 원활하게 진행될 수 있도록 스크립트에서 철자 오류나 줄바꿈 오류 등의 오류를 수정해야 합니다.

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

지금 주문하세요

환경 변수 정의

Github 계정에서 프로젝트 위치로 이동합니다. 클릭 행위 탭. 클릭 새 저장소 비밀 버튼을 클릭하여 코드 서명에 필요한 각 환경 변수의 값을 배치합니다.

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

Github에서 프로젝트 위치로 이동하여 push 명령의 각 구성 요소를 복사합니다.

프로젝트 푸시

코드 편집기에 각 푸시 명령줄을 포함합니다. 완료되면 코드가 Github에 자동으로 푸시됩니다.

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

서명된 파일 업로드

서명된 파일을 클릭하여 업로드합니다.

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

샘플 Github 작업 파이프라인


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

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

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

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

SSL.com의 뉴스 레터 구독

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

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

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

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

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