如何将 eSigner CKA 与 CI/CD 工具集成以实现自动代码签名

下面两个表演示了如何将 eSigner CKA 与 持续集成/持续交付 (CI/CD) 工具 自动代码签名。 提供了 CircleCI、GitHub Actions、Gitlab CI 和 Travis CI 的签名指南 .NET 文件。 提供 Azure Pipeline、GitHub Actions、Gitlab CI 和 Travis CI 的签名指南 .vsix 文件.

eSigner CKA(云密钥适配器) 是一个基于 Windows 的应用程序,它使用 CNG 接口(KSP 密钥服务提供程序)来允许 certutil.exe 和 signtool.exe 等工具使用 eSigner 云签名联盟 (CSC) 兼容的 API  用于企业代码签名操作。

在能够在 CI/CD 工具上执行基于 eSigner 的代码签名之前,必须满足三个先决条件:

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

马上订购

.vsix 签名示例工作流程

环境变量
  • USERNAME: SSL.com 帐户用户名。 (必需的)
  • 密码: SSL.com 帐号密码 (必填)
  • TOTP_秘密:OAuth TOTP 秘密。 您可以访问详细信息 自动化 eSigner EV 代码签名 – SSL.com (必填)
  • 模式:“沙盒”或“产品”(必填)
GitHub上 集成Azure 管道Gitlab CI 集成Travis CI 集成

.vsix 签名示例工作流程

# 工作流的名称。
名称: 标志神器

# 推送时触发此工作流程
上:推

# 创建环境变量
环境:
MASTER_KEY:master.key
SIGNABLE_FILE_PATH:HelloWorld.dll
SIGNABLE_VSIX_FILE_PATH:SSLcom.vsix
安装目录:C:\Users\runneradmin\eSignerCKA
MASTER_KEY_FILE:C:\Users\runneradmin\eSignerCKA\master.key

工作:
# 定义名为“sign-file”的作业
签名文件:
# 在 Windows Runner 上运行作业
运行:windows-latest
# 当工作流运行时,这是记录的名称
名称:使用 eSignerCKA 签署 DLL 文件


脚步:
# 1) 查看源代码,以便工作流可以访问它。
– 名称:结帐存储库
使用:动作/结账@v3

# 2) 下载并解压 eSignerCKA 安装程序
– 名称:下载并解压缩 eSignerCKA 安装程序
运行:|
Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip“https://github.com/SSLcom/eSignerCKA/releases/download/v1.0.6/SSL.COM-eSigner-CKA_1.0.6.zip”
展开-存档-Force eSigner_CKA_Setup.zip
删除项目 eSigner_CKA_Setup.zip
移动项目-目标“eSigner_CKA_Installer.exe”-路径“eSigner_CKA_*\*.exe”

# 3) 安装 eSignerCKA
– 名称:在静默模式下设置 eSignerCKA
运行:|
新项目 -ItemType 目录 -Force -Path ${{ env.INSTALL_DIR }}
./eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”${{ env.INSTALL_DIR }}” | 出空

# 4) 设置SSLcom账户信息
– 名称:在 eSignerCKA 上配置帐户信息
运行:|
${{ env.INSTALL_DIR }}/eSignerCKATool.exe config -mode “${{secrets.MODE }}” -user “${{secrets.USERNAME }}” -pass “${{secrets.PASSWORD }}” - totp“${{secrets.TOTP_SECRET}}”-key“${{env.MASTER_KEY_FILE}}”-r

# 5) 将证书卸载并加载到 Windows 证书存储区
– 名称:将证书加载到 Windows 应用商店
运行:|
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 卸载
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 加载

# 6) 选择代码签名证书并获取签名指纹
– 名称:从 Windows 应用商店中选择证书
运行:|
$CodeSigningCert = 获取 ChildItem 证书:\CurrentUser\My -CodeSigningCert | 选择对象 - 第 1 个
echo “THUMBPRINT=$($CodeSigningCert.Thumbprint)” >> $env:GITHUB_ENV

# 7) 使用signtool 对工件进行签名
– 名称:使用 SignTool 签署示例文件
运行:|
& 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x86/signtool.exe' sign /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 ${{ env.THUMBPRINT }} ${{ env.SIGNABLE_FILE_PATH }}

# 8) 上传 eSignerCKA 日志
– 名称:上传 eSignerCKA 日志
使用:actions/upload-artifact@v3
如果:${{always()}}
使用:
名称:eSignerCKA-Logs-DLL
路径:C:\Users\runneradmin\AppData\Roaming\eSignerCKA\KSP

# 定义名为“sign-vsix-file”的作业
签署 vsix 文件:
# 在 Windows Runner 上运行作业
运行:windows-latest
# 当工作流运行时,这是记录的名称
名称:使用 eSignerCKA 签署 VSIX 文件
脚步:
# 1) 查看源代码,以便工作流可以访问它。
– 名称:结帐存储库
使用:动作/结账@v3

# 2) 设置工作流使用的.NET CLI 环境。
– 名称:设置 Dotnet Core
运行:|
choco 安装 dotnet-runtime -y

# 3) 下载并解压 eSignerCKA 安装程序
– 名称:下载并解压缩 eSignerCKA 安装程序
运行:|
Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip“https://github.com/SSLcom/eSignerCKA/releases/download/v1.0.6/SSL.COM-eSigner-CKA_1.0.6.zip”
展开-存档-Force eSigner_CKA_Setup.zip
删除项目 eSigner_CKA_Setup.zip
移动项目-目标“eSigner_CKA_Installer.exe”-路径“eSigner_CKA_*\*.exe”

# 4) 安装 eSignerCKA
– 名称:在静默模式下设置 eSignerCKA
运行:|
新项目 -ItemType 目录 -Force -Path ${{ env.INSTALL_DIR }}
./eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”${{ env.INSTALL_DIR }}” | 出空

# 5) 设置SSLcom账户信息
– 名称:在 eSignerCKA 上配置帐户信息
运行:|
${{ env.INSTALL_DIR }}/eSignerCKATool.exe config -mode “${{secrets.MODE }}” -user “${{secrets.USERNAME }}” -pass “${{secrets.PASSWORD }}” - totp“${{secrets.TOTP_SECRET}}”-key“${{env.MASTER_KEY_FILE}}”-r

# 6) 将证书卸载并加载到 Windows 证书存储区
– 名称:将证书加载到 Windows 应用商店
运行:|
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 卸载
${{ env.INSTALL_DIR }}/eSignerCKATool.exe 加载

# 7) 选择代码签名证书并获取签名指纹
– 名称:从 Windows 应用商店中选择证书
运行:|
$CodeSigningCert = 获取 ChildItem 证书:\CurrentUser\My -CodeSigningCert | 选择对象 - 第 1 个
echo “THUMBPRINT=$($CodeSigningCert.Thumbprint)” >> $env:GITHUB_ENV

# 8) 将 OpenVsixSignTool 安装到自定义位置 (https://github.com/vcsjones/OpenOpcSignTool)
– 名称:安装 OpenOpcSignTool
运行:|
New-Item -ItemType Directory -Force -Path C:\Users\runneradmin\Desktop\dotnet-tools
Invoke-WebRequest -OutFile OpenVsixSignTool.zip https://github.com/SSLcom/eSignerCKA/releases/download/v1.0.4/OpenVsixSignTool_1.0.0-x86.zip
移动项目 -Path OpenVsixSignTool.zip -Destination C:\Users\runneradmin\Desktop\dotnet-tools\OpenVsixSignTool.zip
展开存档 -LiteralPath C:\Users\runneradmin\Desktop\dotnet-tools\OpenVsixSignTool.zip -DestinationPath C:\Users\runneradmin\Desktop\dotnet-tools -Force

# 9) 使用 OpenOpcSignTool 签名工件
– 名称:使用 OpenVsixSignTool 签署示例文件
运行:|
C:\Users\runneradmin\Desktop\dotnet-tools\OpenVsixSignTool –前滚LatestMajor 符号 –sha1 ${{ env.THUMBPRINT }} –timestamp http://ts.ssl.com -ta sha256 -fd sha256 “${ { env.SIGNABLE_VSIX_FILE_PATH }}”

# 10) 上传 eSignerCKA 日志
– 名称:上传 eSignerCKA 日志
使用:actions/upload-artifact@v3
如果:${{always()}}
使用:
名称:eSignerCKA-Logs-VSIX
路径:C:\Users\runneradmin\AppData\Roaming\eSignerCKA\KSP

 

.vsix 签名示例工作流程

# 持续集成触发器
扳机:
- 没有

# 将作业分为多个阶段。 一个阶段中的所有作业必须在执行下一阶段之前完成。
阶段:
– 阶段:标志
# 当工作流运行时,这是记录的名称
显示名称:签名文件
工作:
- 工作:
池:
# 在 Windows 虚拟机上运行作业
vmImage: 'windows 最新的'
脚步:
# 下载并解压 eSignerCKA 安装程序
– powershell:|
Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip“https://www.ssl.com/download/ssl-com-esigner-cka”
展开-存档-Force eSigner_CKA_Setup.zip
删除项目 eSigner_CKA_Setup.zip
移动项目-目标“eSigner_CKA_Installer.exe”-路径“eSigner_CKA_*\*.exe”
displayName: '下载并解压 eSignerCKA 安装程序'

# 在静默模式下设置 eSignerCKA 并检查安装目录
– powershell:|
./eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”$(Build.BinariesDirectory)\Desktop\eSignerCKA”| 出零
目录 $(Build.BinariesDirectory)\Desktop\eSignerCKA
Get-ChildItem -Path $(Build.BinariesDirectory)\Desktop\eSignerCKA
displayName: '在静默模式下设置 eSignerCKA'

# 配置eSignerCKA上的账户信息
– powershell:|
$(Build.BinariesDirectory)\Desktop\eSignerCKA\eSignerCKATool.exe config -mode $(MODE) -user “$(USERNAME)” -pass “$(PASSWORD)” -totp “$(TOTP_SECRET)” -key “$( Build.BinariesDirectory)\Desktop\eSignerCKA\master.key” -r
displayName: '在 eSignerCKA 上配置帐户信息'

# 将证书卸载并加载到 Windows 应用商店中
– powershell:|
$(Build.BinariesDirectory)\Desktop\eSignerCKA\eSignerCKATool.exe 卸载
$(Build.BinariesDirectory)\Desktop\eSignerCKA\eSignerCKATool.exe 加载
displayName: '将证书卸载并加载到 Windows 应用商店'

# 从 Windows 应用商店中选择证书并使用 SignTool 签署示例文件
– powershell:|
$CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | $CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | 选择对象-First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint
设置变量-名称指纹-值(获取内容.Thumbprint); 回显$指纹
&“C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\signtool.exe” 符号 /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 $指纹HelloWorld.dll
displayName: '使用 SignTool 签署示例文件'

# 保存工件以使用签名作业
– 任务:PublishBuildArtifacts@1
displayName: '保存要下载的签名工件'
输入:
发布路径:HelloWorld.dll
工件名称:HelloWorld.dll

– 阶段:sign_vsix
# 当工作流运行时,这是记录的名称
显示名称:Sign VSIX
工作:
- 工作:
池:
# 在 Windows 虚拟机上运行作业
vmImage: 'windows 最新的'
脚步:
# 下载并解压 eSignerCKA 安装程序
– powershell:|
Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip“https://www.ssl.com/download/ssl-com-esigner-cka”
展开-存档-Force eSigner_CKA_Setup.zip
删除项目 eSigner_CKA_Setup.zip
移动项目-目标“eSigner_CKA_Installer.exe”-路径“eSigner_CKA_*\*.exe”
displayName: '下载并解压 eSignerCKA 安装程序'

# 在静默模式下设置 eSignerCKA 并检查安装目录
– powershell:|
./eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”$(Build.BinariesDirectory)\Desktop\eSignerCKA”| 出零
目录 $(Build.BinariesDirectory)\Desktop\eSignerCKA
Get-ChildItem -Path $(Build.BinariesDirectory)\Desktop\eSignerCKA
displayName: '在静默模式下设置 eSignerCKA'

# 配置eSignerCKA上的账户信息
– powershell:|
$(Build.BinariesDirectory)\Desktop\eSignerCKA\eSignerCKATool.exe config -mode $(MODE) -user “$(USERNAME)” -pass “$(PASSWORD)” -totp “$(TOTP_SECRET)” -key “$( Build.BinariesDirectory)\Desktop\eSignerCKA\master.key” -r
displayName: '在 eSignerCKA 上配置帐户信息'

# 将证书卸载并加载到 Windows 应用商店中
– powershell:|
$(Build.BinariesDirectory)\Desktop\eSignerCKA\eSignerCKATool.exe 卸载
$(Build.BinariesDirectory)\Desktop\eSignerCKA\eSignerCKATool.exe 加载
displayName: '将证书卸载并加载到 Windows 应用商店'

# 将 OpenVsixSignTool 安装到自定义位置 (https://github.com/vcsjones/OpenOpcSignTool)
– powershell:|
New-Item -ItemType Directory -Force -Path $(Build.BinariesDirectory)\Desktop\eSignerCKA\dotnet-tools
Invoke-WebRequest -OutFile OpenVsixSignTool.zip https://github.com/SSLcom/eSignerCKA/releases/download/v1.0.4/OpenVsixSignTool_1.0.0-x86.zip
移动项目 -Path OpenVsixSignTool.zip -Destination $(Build.BinariesDirectory)\Desktop\eSignerCKA\dotnet-tools\OpenVsixSignTool.zip
展开存档 -LiteralPath $(Build.BinariesDirectory)\Desktop\eSignerCKA\dotnet-tools\OpenVsixSignTool.zip -DestinationPath $(Build.BinariesDirectory)\Desktop\eSignerCKA\dotnet-tools -Force
displayName: '将 OpenVsixSignTool 安装到自定义位置'

# 从 Windows 应用商店中选择证书并使用 OpenOpcSignTool 签署示例文件
– powershell:|
$CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | $CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | 选择对象-First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint
设置变量-名称指纹-值(获取内容.Thumbprint); 回显$指纹
$(Build.BinariesDirectory)\Desktop\eSignerCKA\dotnet-tools\OpenVsixSignTool –前滚LatestMajor 符号 –sha1 $Thumbprint –timestamp http://ts.ssl.com -ta sha256 -fd sha256 SSLcom.vsix
displayName: '使用 OpenOpcSignTool 签署示例文件'

# 保存工件以使用签名作业
– 任务:PublishBuildArtifacts@1
displayName: '保存要下载的签名工件'
输入:
发布路径:SSLcom.vsix
工件名称:SSLcom.vsix

# Windows 运行器
.windows_runners:
# 用于从可用跑步者列表中选择跑步者。 运行程序必须具有此处列出的所有标签才能运行作业。
标签:
– 共享窗口
– 窗户
– Windows-1809

# 将作业分为多个阶段。 一个阶段中的所有作业必须在执行下一阶段之前完成。
阶段:
- 符号

# 以下是您签署文件的工作的定义
签名文件:
# 定义作业将运行在哪个阶段。
阶段:签到
# Windows 上的签名文件运行程序
延伸:
– .windows_runners
before_script:
# 创建安装目录
– New-Item -ItemType Directory -Force -Path C:\Users\gitlab_runner\Desktop\eSignerCKA
脚本:
# 下载并解压 eSignerCKA 安装程序
– Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip“https://www.ssl.com/download/ssl-com-esigner-cka”
– 展开-存档-强制 eSigner_CKA_Setup.zip
– 删除项目 eSigner_CKA_Setup.zip
– 移动项目 - 目标“eSigner_CKA_Installer.exe” - 路径“eSigner_CKA_*\*.exe”
# 在静默模式下设置 eSignerCKA
– ./eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”C:\Users\gitlab_runner\Desktop\eSignerCKA” | 出零
# 查看安装目录
– 目录 C:\Users\gitlab_runner\Desktop\eSignerCKA
# 查看安装目录
– Get-ChildItem -Path C:\Users\gitlab_runner\Desktop\eSignerCKA
# 配置eSignerCKA上的账户信息
– C:\Users\gitlab_runner\Desktop\eSignerCKA\eSignerCKATool.exe config -mode ${MODE} -user “${USERNAME}” -pass “${PASSWORD}” -totp “${TOTP_SECRET}” -key “C :\Users\gitlab_runner\AppData\Roaming\eSignerCKA\master.key” -r
# 将证书卸载到 Windows 应用商店
– C:\Users\gitlab_runner\Desktop\eSignerCKA\eSignerCKATool.exe 卸载
# 将证书加载到 Windows 应用商店
– C:\Users\gitlab_runner\Desktop\eSignerCKA\eSignerCKATool.exe 加载
# 检查数据目录
– 目录 C:\Users\gitlab_runner\AppData\Roaming\eSignerCKA
# 检查配置数据目录
– 目录 C:\Users\gitlab_runner\AppData\Roaming\eSignerCKA\Config
# 从 Windows Store 选择证书
– $CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | 选择对象-First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint
# 调试证书指纹
– 设置变量-名称指纹-值(获取内容.Thumbprint); 回显$指纹
# 使用 SignTool 签署示例文件
– powershell.exe -ExecutionPolicy Bypass -Command“Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\signtool.exe 符号 /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 $Thumbprint HelloWorld.dll'”

# 以下是您签署文件的工作的定义
标志-vsix:
# 定义作业将运行在哪个阶段。
阶段:签到
# Windows 上的签名文件运行程序
延伸:
– .windows_runners
before_script:
# 创建安装目录
– New-Item -ItemType Directory -Force -Path C:\Users\gitlab_runner\Desktop\eSignerCKA
脚本:
# 下载并解压 eSignerCKA 安装程序
– Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip“https://www.ssl.com/download/ssl-com-esigner-cka”
– 展开-存档-强制 eSigner_CKA_Setup.zip
– 删除项目 eSigner_CKA_Setup.zip
– 移动项目 - 目标“eSigner_CKA_Installer.exe” - 路径“eSigner_CKA_*\*.exe”
# 在静默模式下设置 eSignerCKA
– ./eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”C:\Users\gitlab_runner\Desktop\eSignerCKA” | 出零
# 查看安装目录
– 目录 C:\Users\gitlab_runner\Desktop\eSignerCKA
# 查看安装目录
– Get-ChildItem -Path C:\Users\gitlab_runner\Desktop\eSignerCKA
# 配置eSignerCKA上的账户信息
– C:\Users\gitlab_runner\Desktop\eSignerCKA\eSignerCKATool.exe config -mode ${MODE} -user “${USERNAME}” -pass “${PASSWORD}” -totp “${TOTP_SECRET}” -key “C :\Users\gitlab_runner\AppData\Roaming\eSignerCKA\master.key” -r
# 将证书卸载到 Windows 应用商店
– C:\Users\gitlab_runner\Desktop\eSignerCKA\eSignerCKATool.exe 卸载
# 将证书加载到 Windows 应用商店
– C:\Users\gitlab_runner\Desktop\eSignerCKA\eSignerCKATool.exe 加载
# 检查数据目录
– 目录 C:\Users\gitlab_runner\AppData\Roaming\eSignerCKA
# 检查配置数据目录
– 目录 C:\Users\gitlab_runner\AppData\Roaming\eSignerCKA\Config
# 从 Windows Store 选择证书
– $CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | 选择对象-First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint
# 调试证书指纹
– 设置变量-名称指纹-值(获取内容.Thumbprint); 回显$指纹
# 安装 Dotnet 运行时 7.0
– choco 安装 dotnet-runtime -y
# 将 OpenVsixSignTool 安装到自定义位置
– New-Item -ItemType Directory -Force -Path C:\Users\gitlab_runner\Desktop\dotnet-tools
– Invoke-WebRequest -OutFile OpenVsixSignTool.zip https://github.com/SSLcom/eSignerCKA/releases/download/v1.0.4/OpenVsixSignTool_1.0.0-x86.zip
– Move-Item -Path OpenVsixSignTool.zip -Destination C:\Users\gitlab_runner\Desktop\dotnet-tools\OpenVsixSignTool.zip
– Expand-Archive -LiteralPath C:\Users\gitlab_runner\Desktop\dotnet-tools\OpenVsixSignTool.zip -DestinationPath C:\Users\gitlab_runner\Desktop\dotnet-tools -Force
# 使用 OpenVsixSignTool 签署示例文件
– powershell.exe -ExecutionPolicy Bypass -Command 'Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); C:\ Users \ gitlab_runner \ Desktop \ dotnet-tools \ OpenVsixSignTool –前滚LatestMajor符号 –sha1 $Thumbprint –timestamp http://ts.ssl.com -ta sha256 -fd sha256“SSLcom.vsix”'

.vsix 代码 DLL 签名示例工作流程

# 运行作业的CPU架构
拱门:amd64

# 运行测试的默认语言
语言:csharp

# 要使用的 Ubuntu 发行版
分布:仿生

# 运行作业的操作系统
操作系统:windows

# 指定构建阶段的顺序。 一个阶段中的所有作业必须在执行下一阶段之前完成。
阶段:
- 符号

工作:
包括:
– 阶段:标志
# 作业名称
名称:签名文件
# 运行作业的操作系统
操作系统:windows
# 使用默认通用语言
语言:c
# 在构建项目之前运行脚本之前
before_script:
# 创建安装目录
– powershell.exe -ExecutionPolicy Bypass -Command 'New-Item -ItemType Directory -Force -Path C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom'
# 构建项目的脚本
脚本:
# 下载并解压 eSignerCKA 安装程序
– powershell.exe -ExecutionPolicy Bypass -Command 'Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip “https://www.ssl.com/download/ssl-com-esigner-cka”'
– powershell.exe -ExecutionPolicy Bypass -Command 'Expand-Archive -Force eSigner_CKA_Setup.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Remove-Item eSigner_CKA_Setup.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Move-Item -Destination “eSigner_CKA_Installer.exe” -Path “eSigner_CKA_*\*.exe”'
# 在静默模式下设置 eSignerCKA
– powershell.exe -ExecutionPolicy Bypass -Command './eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom”| 出零'
# 查看安装目录
– powershell.exe -ExecutionPolicy Bypass -Command 'dir C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom'
# 配置eSignerCKA上的账户信息
– powershell.exe -ExecutionPolicy Bypass -Command 'C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\eSignerCKATool.exe config -mode ${MODE} -user “${USERNAME}” -pass “${ PASSWORD}” -totp “${TOTP_SECRET}” -key “C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\master.key” -r'
# 将证书卸载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\eSignerCKATool.exe 卸载'
# 将证书加载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\eSignerCKATool.exe 加载'
# 从 Windows Store 选择证书
– powershell.exe -ExecutionPolicy Bypass -Command '$CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -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 Kits\10\bin\x86\signtool.exe sign /debug /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 $Thumbprint HelloWorld.dll' ”

– 阶段:标志
# 作业名称
名称:sign-vsix
# 运行作业的操作系统
操作系统:windows
# 使用默认通用语言
语言:c
# 在构建项目之前运行脚本之前
before_script:
# 创建安装目录
– powershell.exe -ExecutionPolicy Bypass -Command 'New-Item -ItemType Directory -Force -Path C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom'
# 构建项目的脚本
脚本:
# 下载并解压 eSignerCKA 安装程序
– powershell.exe -ExecutionPolicy Bypass -Command 'Invoke-WebRequest -OutFile eSigner_CKA_Setup.zip “https://www.ssl.com/download/ssl-com-esigner-cka”'
– powershell.exe -ExecutionPolicy Bypass -Command 'Expand-Archive -Force eSigner_CKA_Setup.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Remove-Item eSigner_CKA_Setup.zip'
– powershell.exe -ExecutionPolicy Bypass -Command 'Move-Item -Destination “eSigner_CKA_Installer.exe” -Path “eSigner_CKA_*\*.exe”'
# 在静默模式下设置 eSignerCKA
– powershell.exe -ExecutionPolicy Bypass -Command './eSigner_CKA_Installer.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom”| 出零'
# 查看安装目录
– powershell.exe -ExecutionPolicy Bypass -Command 'dir C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom'
# 配置eSignerCKA上的账户信息
– powershell.exe -ExecutionPolicy Bypass -Command 'C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\eSignerCKATool.exe config -mode ${MODE} -user “${USERNAME}” -pass “${ PASSWORD}” -totp “${TOTP_SECRET}” -key “C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\master.key” -r'
# 将证书卸载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\eSignerCKATool.exe 卸载'
# 将证书加载到 Windows 应用商店
– powershell.exe -ExecutionPolicy Bypass -Command 'C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\SSLcom\eSignerCKATool.exe 加载'
# 从 Windows Store 选择证书
– powershell.exe -ExecutionPolicy Bypass -Command '$CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1; echo $CodeSigningCert.Thumbprint > .Thumbprint'
# 调试证书指纹
– powershell.exe -ExecutionPolicy Bypass -Command 'Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); 回声$指纹'
# 将 OpenVsixSignTool 安装到自定义位置 (https://github.com/vcsjones/OpenOpcSignTool)
– powershell.exe -ExecutionPolicy Bypass -Command 'New-Item -ItemType Directory -Force -Path C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\dotnet-tools'
powershell.exe -ExecutionPolicy 绕过 -Command 'Invoke-WebRequest -OutFile OpenVsixSignTool.zip https://github.com/SSLcom/eSignerCKA/releases/download/v1.0.4/OpenVsixSignTool_1.0.0-x86.zip'
powershell.exe -ExecutionPolicy Bypass -Command 'Move-Item -Path OpenVsixSignTool.zip -Destination C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\dotnet-tools\OpenVsixSignTool.zip'
powershell.exe -ExecutionPolicy 绕过 -Command 'Expand-Archive -LiteralPath C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\dotnet-tools\OpenVsixSignTool.zip -DestinationPath C:\Users\travis\build\mbayrak-sslcom \eSignerCKA\dotnet-tools -Force'
# 使用 OpenVsixSignTool 签署示例文件
– powershell.exe -ExecutionPolicy Bypass -Command“Set-Variable -Name Thumbprint -Value (Get-Content .Thumbprint); C:\Users\travis\build\mbayrak-sslcom\eSignerCKA\dotnet-tools\OpenVsixSignTool –前滚LatestMajor 符号 –sha1 $Thumbprint –时间戳 http://ts.ssl.com -ta sha256 -fd sha256 SSLcom.vsix ”

示例代码可以参考 SSL.com Github 存储库位于: https://github.com/SSLcom/esigner-sample

.NET代码DLL 签名示例工作流程

CircleCI 整合GitHub 操作集成Gitlab CI 集成Travis CI 集成

.NET 代码 DLL 签名示例工作流

准备工作流的组件

  1. 在您的编辑器上创建一个 .circleci 文件夹。 将工作流包含在该文件夹中,并在该文件夹下创建一个 yml 文件作为 config.yml。
  2. 设置 CircleCI 版本。 version 字段旨在用于发出弃用或中断更改的警告。

    版本:2.1

  3. Orbs 是可重用的 CircleCI 配置包,您可以跨项目共享,使您能够创建可跨多个项目使用的封装的、参数化的命令、作业和执行程序。 要使用 signtool 工具,这需要是 Windows。

    球体:

       获胜:circleci/windows@5.0.0

  4. 通过工作流调用作业。 工作流编排一组要运行的作业。 

    工作流程:

       # 工作流的名称。

       签名文件:

          # 在工作流程中,您定义要运行的作业。

             工作:

                – 签名文件

  5. 定义稍后在工作流中调用的作业。

    工作:

       签名文件:

  6. 指定执行环境。 我们必须使用 windows 执行器,因为需要 signtool。

    执行人:

       名称:win/server-2019

       尺寸:中等

       变体:vs 2019

  7. 放置作业的工作目录 

    工作目录:/home/circleci/project

  8. 向作业添加步骤请参阅: https://circleci.com/docs/2.0/configuration-reference/#steps  

    脚步:

  9. 查看源代码,以便工作流可以访问它。

    - 查看

  10. 下载并解压缩 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”

  11. 安装 eSignerCKA

    - 跑步:

          名称:在静默模式下设置 eSignerCKA

          命令: |

                mkdir -p“/home/circleci/project/eSignerCKA”

                ./eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”/home/circleci/project/eSignerCKA” | 出空

  12. 在 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

  13. 将证书卸载并加载到 Windows 证书存储区

    - 跑步:

          名称:将证书加载到 Windows 应用商店

          命令: |

                /home/circleci/project/eSignerCKA/eSignerCKATool.exe 卸载

                /home/circleci/project/eSignerCKA/eSignerCKATool.exe 加载

  14. 选择代码签名证书并使用签名工具获取用于签名和签名工件的指纹

    - 跑步:

          名称:从 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 签名示例工作流

准备工作流的组件

  1. 在您的编辑器上创建一个 .github/workflows 文件夹。 将工作流包含在该文件夹中,并在该文件夹下创建一个 sign.yml 文件。
  2. 命名您的项目和所涉及的工作流程类型 

    名称:标志神器

  3. 推送时触发此工作流 

    上:推

  4. 创建环境变量

    环境:

     MASTER_KEY:master.key

     SIGNABLE_FILE_PATH:HelloWorld.dll

     INSTALL_DIR:C:UsersrunneradmineSignerCKA

     MASTER_KEY_FILE:C:UsersrunneradmineSignerCKAmaster.key

  5. 在编辑器上定义工作

    工作:

     签名文件:

  6. 在 Windows Runner 上运行作业运行:windows-latest

  7. 创建一个名称。 当工作流运行时,这是记录的名称。

    名称:使用 eSignerCKA 签署 DLL 文件

概述签名作业的步骤

  1. 查看源代码,以便工作流可以访问它。

    – 名称:结帐存储库

       使用:动作/结账@v3

  2. 下载并解压缩 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”
  3. 安装 eSignerCKA

    – 名称:在静默模式下设置 eSignerCKA

      运行:|

          新项目 -ItemType 目录 -Force -Path ${{ env.INSTALL_DIR }}

          ./eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR=”${{ env.INSTALL_DIR }}” | 出空

  4. 在 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

  5. 将证书卸载并加载到 Windows 证书存储区

    – 名称:将证书加载到 Windows 应用商店

      运行:|

          ${{ env.INSTALL_DIR }}/eSignerCKATool.exe 卸载

          ${{ env.INSTALL_DIR }}/eSignerCKATool.exe 加载
  6. 选择代码签名证书并获取用于签名的指纹

    – 名称:从 Windows 应用商店中选择证书

      运行:|

          $CodeSigningCert = 获取ChildItem 证书:CurrentUserMy -CodeSigningCert | 选择对象-First 1

          echo “THUMBPRINT=$($CodeSigningCert.Thumbprint)” >> $env:GITHUB_ENV
  7. 使用 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 签名示例工作流

定义工作流的组件

  1. C在文件夹下创建一个 .gitlab-ci.yml 的 yml 文件。
  2. 用于从可用跑步者列表中选择跑步者。 运行器必须具有此处列出的所有标签才能运行该作业。

    .windows_runners:

          标签:

                – 共享窗口

                – 窗户

                – Windows-1809

  3. 将作业分组到阶段。 一个阶段中的所有作业必须在执行下一阶段之前完成。

    阶段:

          - 符号

  4. 以下是您要签署文件的工作的定义。 定义作业将在哪个阶段运行。

    签名文件:

         阶段:签到

  5. 要从中继承配置的一个或多个作业的名称。

    延伸:

         – .windows_runners
  6. 编写脚本来签署文件。

    脚本:

    # 下载并解压 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 签名示例工作流

定义工作流的组件

  1. 在根文件夹下创建一个 yml 文件作为 .travis.yml。
  2. 放置 CPU 架构来运行作业。

    拱门:amd64

  3. 在 Travis CI 上运行作业的默认语言

    语言:csharp

  4. 运行作业的操作系统

    操作系统:windows

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

    阶段:

      - 符号

  6. 定义构建阶段

    工作:

      包括:

         – 阶段:标志

  7. 职位名称

    名称:签名文件
  8. 运行作业的操作系统

    操作系统:windows
  9. 在 Travis CI 上运行作业的当前语言

    语言:c
  10. 在构建项目之前编写 Before 脚本以运行

    before_script:

        – powershell.exe -ExecutionPolicy Bypass -Command 'New-Item -ItemType Directory -Force -Path C:Userstravisbuild设计样品eSignerCKASSLcom'

  11. 编写脚本来构建项目。

    脚本:

    # 下载并解压 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'”

需要定制解决方案? 

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

订阅 SSL.com 的时事通讯

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

保持信息灵通和安全

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

我们希望收到您的反馈

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