eSigner CKA(云密钥适配器) 是一个基于 Windows 的应用程序,它使用 CNG 接口(KSP 密钥服务提供程序)来允许 certutil.exe 和 signtool.exe 等工具使用 eSigner 云签名联盟 (CSC) 兼容的 API 用于企业代码签名操作。 在能够在 CI/CD 工具上执行基于 eSigner 的代码签名之前,必须满足三个先决条件:
.vsix 签名示例工作流程
环境变量- USERNAME: SSL.com 帐户用户名。 (必需的)
- 密码: SSL.com 帐号密码 (必填)
- TOTP_秘密:OAuth TOTP 秘密。 您可以访问详细信息 自动化 eSigner EV 代码签名 – SSL.com (必填)
- 模式:“沙盒”或“产品”(必填)
.NET代码DLL 签名示例工作流程
.NET 代码 DLL 签名示例工作流
准备工作流的组件
- 在您的编辑器上创建一个 .circleci 文件夹。 将工作流包含在该文件夹中,并在该文件夹下创建一个 yml 文件作为 config.yml。
- 设置 CircleCI 版本。 version 字段旨在用于发出弃用或中断更改的警告。
版本:2.1
-
Orbs 是可重用的 CircleCI 配置包,您可以跨项目共享,使您能够创建可跨多个项目使用的封装的、参数化的命令、作业和执行程序。 要使用 signtool 工具,这需要是 Windows。
球体:
获胜:circleci/windows@5.0.0
-
通过工作流调用作业。 工作流编排一组要运行的作业。
工作流程:
# 工作流的名称。
签名文件:
# 在工作流程中,您定义要运行的作业。
工作:
– 签名文件
- 定义稍后在工作流中调用的作业。
工作:
签名文件:
- 指定执行环境。 我们必须使用 windows 执行器,因为需要 signtool。
执行人:
名称:win/server-2019
尺寸:中等
变体:vs 2019
- 放置作业的工作目录
工作目录:/home/circleci/project
- 向作业添加步骤请参阅: https://circleci.com/docs/2.0/configuration-reference/#steps
脚步:
- 查看源代码,以便工作流可以访问它。
- 查看
- 下载并解压缩 eSignerCKA 安装程序
- 跑步:
名称:下载并解压缩 eSignerCKA 安装程序
命令: |
Invoke-WebRequest -OutFile eSigner_CKA_1.0.3.zip“https://www.ssl.com/download/ssl-com-esigner-cka-1-0-3”
展开-存档-Force eSigner_CKA_1.0.3.zip
删除项目 eSigner_CKA_1.0.3.zip
移动项目-目标“eSigner_CKA_1.0.3.exe”-路径“eSigner_CKA_1.0.3SSL.COM eSigner CKA_1.0.3.exe”
- 安装 eSignerCKA
- 跑步:
名称:在静默模式下设置 eSignerCKA
命令: |
mkdir -p“/home/circleci/project/eSignerCKA”
./eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”/home/circleci/project/eSignerCKA” | 出空
- 在 eSignerCKA 上设置 SSLcom 账户信息
- 跑步:
名称:配置eSignerCKA上的账户信息
命令: |
/home/circleci/project/eSignerCKA/eSignerCKATool.exe config-mode $env:MODE -user “$env:USERNAME” -pass “$env:PASSWORD” -totp “$env:TOTP_SECRET” -key “/home/circleci /project/eSignerCKA/master.key”-r
- 将证书卸载并加载到 Windows 证书存储区
- 跑步:
名称:将证书加载到 Windows 应用商店
命令: |
/home/circleci/project/eSignerCKA/eSignerCKATool.exe 卸载
/home/circleci/project/eSignerCKA/eSignerCKATool.exe 加载
- 选择代码签名证书并使用签名工具获取用于签名和签名工件的指纹
- 跑步:
名称:从 Windows 应用商店中选择证书并使用 SignTool 签署示例文件
命令: |
$CodeSigningCert = 获取ChildItem 证书:CurrentUserMy -CodeSigningCert | 选择对象-First 1
& 'C:Program Files (x86)Windows Kits10App Certification Kitsigntool.exe' sign /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 “$($CodeSigningCert.Thumbprint)” “HelloWorld。 dll”
.NET 代码 DLL 签名示例工作流
准备工作流的组件
- 在您的编辑器上创建一个 .github/workflows 文件夹。 将工作流包含在该文件夹中,并在该文件夹下创建一个 sign.yml 文件。
- 命名您的项目和所涉及的工作流程类型
名称:标志神器
-
推送时触发此工作流
上:推
-
创建环境变量
环境:
MASTER_KEY:master.key
SIGNABLE_FILE_PATH:HelloWorld.dll
INSTALL_DIR:C:UsersrunneradmineSignerCKA
MASTER_KEY_FILE:C:UsersrunneradmineSignerCKAmaster.key
-
在编辑器上定义工作
工作:
签名文件:
-
在 Windows Runner 上运行作业运行:windows-latest
-
创建一个名称。 当工作流运行时,这是记录的名称。
名称:使用 eSignerCKA 签署 DLL 文件
概述签名作业的步骤
-
查看源代码,以便工作流可以访问它。
– 名称:结帐存储库
使用:动作/结账@v3
- 下载并解压缩 eSignerCKA 安装程序
– 名称:下载并解压缩 eSignerCKA 安装程序
运行:|
Invoke-WebRequest -OutFile eSigner_CKA_1.0.3.zip“https://www.ssl.com/download/ssl-com-esigner-cka-1-0-3”
展开-存档-Force eSigner_CKA_1.0.3.zip
删除项目 eSigner_CKA_1.0.3.zip
移动项目-目标“eSigner_CKA_1.0.3.exe”-路径“eSigner_CKA_1.0.3SSL.COM eSigner CKA_1.0.3.exe” - 安装 eSignerCKA
– 名称:在静默模式下设置 eSignerCKA
运行:|
新项目 -ItemType 目录 -Force -Path ${{ env.INSTALL_DIR }}
./eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”${{ env.INSTALL_DIR }}” | 出空
- 在 eSignerCKA 上设置 SSL.com 帐户信息
– 名称:在 eSignerCKA 上配置帐户信息
运行:|
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 配置模式“${{ secrets.MODE }}” -user “${{ secrets.USERNAME }}”
-pass“${{secrets.PASSWORD}}”-totp“${{secrets.TOTP_SECRET}}”-key“${{env.MASTER_KEY_FILE}}”-r
- 将证书卸载并加载到 Windows 证书存储区
– 名称:将证书加载到 Windows 应用商店
运行:|
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 卸载
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 加载 - 选择代码签名证书并获取用于签名的指纹
– 名称:从 Windows 应用商店中选择证书
运行:|
$CodeSigningCert = 获取ChildItem 证书:CurrentUserMy -CodeSigningCert | 选择对象-First 1
echo “THUMBPRINT=$($CodeSigningCert.Thumbprint)” >> $env:GITHUB_ENV - 使用 signtool 对工件进行签名
– 名称:使用 SignTool 签署示例文件
运行:|
& 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe' sign /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 ${{ env.THUMBPRINT }} ${{ env.SIGNABLE_FILE_PATH }}
.NET 代码 DLL 签名示例工作流
定义工作流的组件
- C在文件夹下创建一个 .gitlab-ci.yml 的 yml 文件。
- 用于从可用跑步者列表中选择跑步者。 运行器必须具有此处列出的所有标签才能运行该作业。
.windows_runners:
标签:
– 共享窗口
– 窗户
– Windows-1809
- 将作业分组到阶段。 一个阶段中的所有作业必须在执行下一阶段之前完成。
阶段:
- 符号
- 以下是您要签署文件的工作的定义。 定义作业将在哪个阶段运行。
签名文件:
阶段:签到
- 要从中继承配置的一个或多个作业的名称。
延伸:
– .windows_runners - 编写脚本来签署文件。
脚本:
# 下载并解压 eSignerCKA 安装程序
– powershell.exe -ExecutionPolicy Bypass -Command 'Invoke-WebRequest -OutFile eSigner_CKA_1.0.3.zip “https://www.ssl.com/download/ssl-com-esigner-cka-1-0-3”'
– powershell.exe -ExecutionPolicy Bypass -Command 'Expand-Archive -Force eSigner_CKA_1.0.3.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Remove-Item eSigner_CKA_1.0.3.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Move-Item -Destination “eSigner_CKA_1.0.3.exe” -Path “eSigner_CKA_1.0.3SSL.COM eSigner CKA_1.0.3.exe”'
# 在静默模式下设置 eSignerCKA
– powershell.exe -ExecutionPolicy Bypass -Command './eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”C:Usersgitlab_runnerDesktopeSignerCKA”'
# 查看安装目录
– powershell.exe -ExecutionPolicy Bypass -Command 'dir C:Usersgitlab_runnerDesktopeSignerCKA'
# 配置eSignerCKA上的账户信息
– powershell.exe -ExecutionPolicy Bypass -Command 'C:Usersgitlab_runnerDesktopeSignerCKAeSignerCKATool.exe config -mode ${MODE}
-user“${USERNAME}”-pass“${PASSWORD}”-totp“${TOTP_SECRET}”-key“C:Usersgitlab_runnerAppDataRoamingeSignerCKAmaster.key”-r'
# 将证书卸载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:Usersgitlab_runnerDesktopeSignerCKAeSignerCKATool.exe 卸载'
# 将证书加载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:Usersgitlab_runnerDesktopeSignerCKAeSignerCKATool.exe 加载'
# 检查数据目录
– powershell.exe -ExecutionPolicy Bypass -Command 'dir C:Usersgitlab_runnerAppDataRoamingeSignerCKA'
# 检查配置数据目录
– powershell.exe -ExecutionPolicy Bypass -Command 'dir C:Usersgitlab_runnerAppDataRoamingeSignerCKAConfig'
# 从 Windows Store 选择证书
– powershell.exe -ExecutionPolicy 绕过 -Command '$CodeSigningCert = Get-ChildItem Cert:CurrentUserMy -CodeSigningCert | 选择对象-First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint'
# 调试证书指纹
– powershell.exe -ExecutionPolicy Bypass -Command 'Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); 回声$指纹'
# 使用 SignTool 签署示例文件
– powershell.exe -ExecutionPolicy Bypass -Command“Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint);
'C:Program Files (x86)Windows Kits10bin10.0.17763.0x86signtool.exe 符号 /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 $Thumbprint HelloWorld.dll'”
.NET 代码 DLL 签名示例工作流
定义工作流的组件
- 在根文件夹下创建一个 yml 文件作为 .travis.yml。
- 放置 CPU 架构来运行作业。
拱门:amd64
- 在 Travis CI 上运行作业的默认语言
语言:csharp
- 运行作业的操作系统
操作系统:windows
- 指定阶段的顺序。 一个阶段的所有作业必须在下一阶段执行之前完成。
阶段:
- 符号
- 定义构建阶段
工作:
包括:
– 阶段:标志
-
职位名称
名称:签名文件 -
运行作业的操作系统
操作系统:windows -
在 Travis CI 上运行作业的当前语言
语言:c -
在构建项目之前编写 Before 脚本以运行
before_script:
– powershell.exe -ExecutionPolicy Bypass -Command 'New-Item -ItemType Directory -Force -Path C:Userstravisbuild设计样品eSignerCKASSLcom'
-
编写脚本来构建项目。
脚本:
# 下载并解压 eSignerCKA 安装程序
– powershell.exe -ExecutionPolicy Bypass -Command 'Invoke-WebRequest -OutFile eSigner_CKA_1.0.3.zip “https://www.ssl.com/download/ssl-com-esigner-cka-1-0-3”'
– powershell.exe -ExecutionPolicy Bypass -Command 'Expand-Archive -Force eSigner_CKA_1.0.3.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Remove-Item eSigner_CKA_1.0.3.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Move-Item -Destination “eSigner_CKA_1.0.3.exe” -Path “eSigner_CKA_1.0.3SSL.COM eSigner CKA_1.0.3.exe”'
# 在静默模式下设置 eSignerCKA
– powershell.exe -ExecutionPolicy Bypass -Command './eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”C:Userstravisbuild设计样品eSignerCKASSLcom”| 出零'
# 查看安装目录
– powershell.exe -ExecutionPolicy Bypass -Command 'dir C:Userstravisbuild设计样品eSignerCKASSLcom'
# 配置eSignerCKA上的账户信息
– powershell.exe -ExecutionPolicy Bypass -Command 'C:Userstravisbuild设计样品eSignerCKASSLcomeSignerCKATool.exe config -mode ${MODE} -user “${USERNAME}”
-pass “${PASSWORD}” -totp “${TOTP_SECRET}” -key “C:Userstravisbuild设计样品eSignerCKASSLcommaster.key”-r'
# 将证书卸载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:Userstravisbuild设计样品eSignerCKASSLcomeSignerCKATool.exe 卸载'
# 将证书加载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:Userstravisbuild设计样品eSignerCKASSLcomeSignerCKATool.exe 加载'
# 从 Windows Store 选择证书
– powershell.exe -ExecutionPolicy 绕过 -Command '$CodeSigningCert = Get-ChildItem Cert:CurrentUserMy -CodeSigningCert | 选择对象-First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint'
# 调试证书指纹
– powershell.exe -ExecutionPolicy Bypass -Command 'Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); 回声$指纹'
# 使用 SignTool 签署示例文件
– powershell.exe -ExecutionPolicy Bypass -Command“Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); 'C:Program Files (x86)Windows Kits10binx64signtool.exe 符号 /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 $Thumbprint HelloWorld.dll'”
需要定制解决方案?
凭借我们的专业知识和五星级支持人员,我们已准备好并愿意与您合作制定定制解决方案或企业级大批量签约折扣。 填写下面的表格,我们会与您联系。