云代码签名与 Travis CI 的集成

本文展示了如何通过将 eSigner CodeSignTool 集成到管道中来在 Travis CI 上执行自动代码签名。 

eSigner 是我们的远程代码签名平台,它提供与 USB 令牌和联网 HSMS 相同级别的安全性,但以更高效和直观的方式。  eSigner 工具包的一部分是 CodeSignTool:一个安全的命令行实用程序,非常适合在包括 Travis 在内的各种 CI/CD 环境中执行企业代码签名。
SSL.com的 EV 代码签名 证书通过最高级别的验证帮助保护您的代码免受未经授权的篡改和破坏,并且只需 $ 249每年。 您也可以 大规模使用您的 EV 代码签名证书 使用 eSigner 在云中。

马上订购

环境变量

  • USERNAME: SSL.com 帐户用户名。 (必需的)
  • 密码: SSL.com 帐号密码 (必填)
  • 凭据_ID:用于签署证书的凭据 ID。 如果 credential_id 被省略并且用户只有一个 eSigner 代码签名证书,CodeSignTool 将默认使用该证书。 如果用户拥有多个代码签名证书,则此参数为必填项。 (必需的)
  • TOTP_秘密:OAuth TOTP 秘密。 您可以访问详细信息 https://www.ssl.com/how-to/automate-esigner-ev-code-signing (必填)
  • ENVIRONMENT_NAME :“测试”或“生产”环境。 (必需的)

输入

  • 输入文件路径:要签名的代码对象的路径。 (必需的)
  • 输出目录路径:将写入签名代码对象的目录。 如果省略 output_path,则在 -file_path 中指定的文件将被签名文件覆盖。

Java 代码 (Maven) JAR 签名示例工作流

建立专案

在项目下,为 Travis 创建一个文件

定义工作流的组件

  1. 放置运行作业的 CPU 架构

拱门:amd64

  1. 运行测试的默认语言

语言:java

  1. 指定运行作业的操作系统

操作系统:Linux

  1. 编写将要使用的 Ubuntu 发行版

分布:仿生

  1. 全局定义环境变量。 作业级别属性覆盖全局变量。
  • 请注意,仅 Gradle 项目实例需要 TERM=dumb。
  • 在 ENVIRONMENT_NAME 下,为测试签名放置“TEST”,为实时签名放置“PROD”。

环境:

  全球的:

    – PROJECT_NAME =“HelloWorld”

    – PROJECT_VERSION=”0.0.1”

    – 术语=哑巴

    – ENVIRONMENT_NAME=”测试”

  1. 指定阶段的顺序。 一个阶段的所有作业必须在下一阶段执行之前完成。

阶段:

  - 建造

  - 符号

概述构建阶段  

工作:

  包括:

        – 阶段:构建

  1. 职位名称

      名称:构建maven

  1. 要使用的 Ubuntu 发行版

      分布:仿生

  1. 使用 docker 命令进行签名  

      服务:

        – 码头工人

  1. 使用 dotnet-cli 构建项目

      语言:java

  1. 用于构建项目的 Java 版本

      JDK:

      – oraclejdk17

  1. 缓存 m2 目录以加快速度

      缓存:

        目录:

        – $HOME/.m2

  1. 在构建项目之前编写 Before 脚本以运行

      before_script:

        # 为工件创建目录

        – mkdir -p ${TRAVIS_BUILD_DIR}/工件

        – mkdir -p ${TRAVIS_BUILD_DIR}/包

        # 设置 Maven 构建选项

        – 导出 MAVEN_CLI_OPTS=”–batch-mode –errors –fail-at-end –show-version -DinstallAtEnd=true -DdeployAtEnd=true”

  1. 编写脚本来构建项目。
  • 在此签名示例工作流中,创建了多个项目类型。 这就是为什么通过创建子文件夹来保存不同项目类型的文件的原因。 为 Java 项目创建了一个名为“java”的子文件夹。 在上面的演示屏幕截图中,没有必要创建一个名为“java”的子文件夹,因此它没有包含在脚本中。

      脚本:

        # 使用 Maven 选项构建 Maven 项目

        – mvn $MAVEN_CLI_OPTS 全新安装 -f java/pom.xml

         # 将构建的工件复制到工件目录

        – cp java/target/${PROJECT_NAME}-${PROJECT_VERSION}.jar ${TRAVIS_BUILD_DIR}/packages/${PROJECT_NAME}.jar

     

  1. 概述如何指定在作业成功时应附加到作业的文件和目录列表。

      工作区:

        创造:

          名称:maven-jar-artifacts

          路径:

            # 保存工件以使用签名作业

            – ${TRAVIS_BUILD_DIR}/packages/${PROJECT_NAME}.jar

勾勒标志阶段

 – 阶段:标志

  1. 写作业名

      名称:sign-jar-file

  1. 放置要使用的 Ubuntu 发行版

      分布:仿生

  1. 使用 Docker 命令进行签名  

      服务:

        – 码头工人

     

  1. 为特定作业定义环境变量。
  • 在上面的屏幕截图中,sign 命令是直接在 sign 脚本中定义的,而不是在环境变量下。 乙OTH 方法可以使用 TravisCI 正确签名。

      环境:

        命令=“符号”

  1. 使用 dotnet-cli 构建项目

      语言:java

  1. 用于构建项目的 Java 版本

      JDK:

      – oraclejdk17

  1. 在构建项目之前运行脚本之前

      before_script:

        # 为工件创建目录

        – mkdir -p ${TRAVIS_BUILD_DIR}/工件

        – mkdir -p ${TRAVIS_BUILD_DIR}/包

     

  1. 构建项目的脚本

      脚本:

        # Docker 拉取 CodeSigner Docker 镜像

        – docker pull ghcr.io/sslcom/codesigner:最新

        # 使用 CodeSigner Docker 镜像签署工件

        – docker run -i –rm –dns 8.8.8.8 –network host –volume ${TRAVIS_BUILD_DIR}/packages:/codesign/examples

          –volume ${TRAVIS_BUILD_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}.jar -output_dir_path=/codesign/output

  1. 用于指定作业成功时应附加到作业的文件和目录列表。

      工作区:

        使用:

          – maven-jar-工件

        创造:

          名称:签名的jar文件

          路径:

            # 保存签名的工件

            – ${TRAVIS_BUILD_DIR}/artifacts/${PROJECT_NAME}.jar

SSL.com的 EV 代码签名 证书通过最高级别的验证帮助保护您的代码免受未经授权的篡改和破坏,并且只需 $ 249每年。 您也可以 大规模使用您的 EV 代码签名证书 使用 eSigner 在云中。

马上订购

定义环境变量

转到 Travis 并单击 个人设置 按键

添加每个变量的值

向下滚动到 环境变量 部分并单击添加按钮以添加每个变量的值

创建一个 Github 存储库

在 Github 上查找推送命令

在编辑器的终端上编写推送命令

等待构建作业完成

在 Travis 上,构建作业应在您推送代码后自动启动。

启动代码签名阶段

点击 签署 对于部分 CodeSign工具 开始签名过程

等待您的虚拟机完成启动

确认代码签名是否成功

你可以参考 SSL.com Github 存储库,其中包含 docker 镜像的源代码并描述了如何使用它: https://github.com/SSLcom/ci-images

示例 Travis CI 流水线

查看我们创建的示例 Travis CI 管道 github.com/SSLcom/codesigner-travisci-sample

其他 CI/CD 服务远程签名集成指南

需要定制解决方案? 

凭借我们的专业知识和五星级支持人员,我们已准备好并愿意与您合作制定定制解决方案或企业级大批量签约折扣。 填写下面的表格,我们会与您联系。

订阅 SSL.com 的时事通讯

不要错过SSL.com上的新文章和更新

保持信息灵通和安全

SSL.com 是网络安全领域的全球领导者, PKI 和数字证书。注册以接收最新的行业新闻、提示和产品公告 SSL.com.

我们希望收到您的反馈

参加我们的调查,让我们知道您对最近购买的想法。