网站图标 SSL.com

如何将 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 签名示例工作流程

环境变量
示例代码可以参考 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'”

需要定制解决方案? 

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

退出手机版