Gitlab CI 使用云签平台

介绍 Gitlab-CI 中,如何配置云签平台进行签名打包

简介

云签平台,基于符合 FIPS 140-2 Level3 国际安全标准的服务器密码机进行用户密钥管理的方式,使用户免去传统 UKEY 易丢失、频繁输入口令、传输成本高等顾虑,可以随时随地想签就签。

简单来说,就是密钥存储在云端,由云端提供各类签名途径。以下介绍如何在 gitlab ci 中配置自动化签名流水线。

准备条件

  • 登录 CertCloud 购买云签代码签名证书
  • 下载安装签名客户端: 官网地址
  • ssigncode 签名程序,存放在签名客户端的安装路径中

流水线配置示例 1

// 使用云签平台 ssigncode 命令程序
stages:
  - build
  - signing

build:win_client:
  image: golang:1.20.1
  only:
    - tags
  tags:
    - windows
  stage: build
  before_script:
   - mkdir -Path ${CI_PROJECT_DIR}\release
  script:
   - go build -v -ldflags "-w -s" -o ${CI_PROJECT_DIR}\release\test_.exe
  artifacts:
    paths:
      - ${CI_PROJECT_DIR}\release\test.exe
    expire_in: 1 week

build:sign:
  only:
    - tags
  tags:
    - windows
  stage:signing
  script:
    - ssigncode vsign -s https://vsign.trustasia.com —cert_hash ${SIGN_CERT_HASH} —cert_from csign -u ${OPERATOR_HASH} -i ${CI_PROJECT_DIR}\release\test_.exe -o ${CI_PROJECT_DIR}\release\test.exe —ts {TIMESTAMP_VENDOR}

流水线配置示例 2

前置条件:在签名客户端中开启 KSP 功能

build:win_client:
.....

build:sign:
  only:
    - tags
  tags:
    - windows
  stage:signing
  script:
    - signtool.exe sign /fd sha256 /sha1 ${SIGN_CERT_HASH} ${CI_PROJECT_DIR}\release\test_.exe

手动批量签名

参考《签名客户端使用说明》