en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

云代码签名与 GitLab CI 的集成

这是一个关于如何使用 eSigner CodeSignTool 在 GitLab CI 上进行自动代码签名的教程。 

CodeSignTool 是构成 eSigner 一部分的安全命令行实用程序:我们的云代码签名环境使软件发布者和开发人员能够以简单的方式安全有效地进行远程签名。  下面的示例工作流显示了使用 eSigner 在 GitLab CI 上签名的 .NET DLL 代码。

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

马上订购

环境变量

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

输入

  • 输入文件路径:要签名的代码对象的路径。 (必需的)
  • 输出目录路径:将写入签名代码对象的目录。 如果省略 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 工件的工作的定义

构建点网:

 

  1. 定义作业将在哪个阶段运行。
  阶段:构建

 

  1. 放置应该使用的图像的全名。 如果需要,它应该包含注册表部分。
 图片:mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. 定义应该在作业*之前*运行的脚本。 可以全局设置或按作业设置。
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. 定义 Runner 执行的 Shell 脚本。 构建 DLL 工件
脚本: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll

 

  1. 指定作业成功时应附加到作业的文件和目录列表。
  • 左侧工具栏上的'expire_in' 属性允许在一段时间后删除文件。 它的使用是可选的。 这就是上面示例工作流的屏幕截图未显示此属性的原因。
工件:路径:- ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in:5 分钟
 

定义标志阶段

以下是您签署 dll 工件的工作的定义

登录dotnet-artifacts:

 

  1. 定义作业将在哪个阶段运行。
  阶段:签到

 

  1. 放置应该使用的图像的全名。 如果需要,它应该包含注册表部分。
 图片:码头:19.03.0

 

  1. 定义服务。 这类似于 `image` 属性,但会将指定的服务链接到 `image` 容器。
服务: - 码头工人:19.03.0-dind

 

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

 

  1. 定义应该在作业*之前*运行的脚本。 可以全局设置或按作业设置。
  before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. 放置由 Runner 执行的 Shell 脚本。 使用 CodeSignTool Docker Image 签署 .NET dll 工件
脚本:- docker pull ghcr.io/bayrakmustafa/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/bayrakmustafa/codesigner:最新的 ${COMMAND} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output

 

  1. 编写可用于指定在作业成功时应附加到作业的文件和目录列表的脚本。
工件:路径:-${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in:1 天

 

  1. 指定应从中加载工件的早期阶段的作业名称列表。
依赖项:- 构建-dotnet
 

启动构建阶段

创建存储库

请参阅 Gitlab 上的命令行说明,如下面的屏幕截图所示

推送你的文件夹

通过单击执行此操作 终端 在菜单上,然后是 新航站楼.

在终端上键入推送脚本以推送项目 

单击构建按钮

触发管道后,继续构建

检查构建是否成功  

启动标志阶段

继续签署工件

确认代码签名是否成功

您现在可以下载签名文件

注意:确保更正脚本中的印刷错误或错误的换行符,以便签名过程顺利进行。

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

有关 eSigner 订阅和代码签名证书的信息,包括大批量和自定义解决方案,请联系  或填写下面的表格。  

订阅 SSL.com 的时事通讯

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