クラウド コード署名と CircleCI の統合

このチュートリアルでは、自動コード署名のために eSigner を CircleCI と統合する方法を示します。

eSigner は SSL.com のコード署名用クラウド環境です。 署名キーと証明書は、SSL.com によってクラウドで安全にホストされ、インターネットに接続された任意のデバイスからアクセスして署名できるため、eSigner はエンタープライズ コード署名に最適なプラットフォームの XNUMX つになっています。 eSigner ツールキットには、CodeSignTool が含まれています。 コマンドラインユーティリティ EVコード署名 CircleCI を含むさまざまな継続的インテグレーション/継続的デリバリー (CI/CD) プラットフォームで自動署名プロセスを作成するのに理想的です。 

SSL.com EV コード署名 証明書は、最高レベルの検証により、不正な改ざんや侵害からコードを保護するのに役立ちます。 年間$ 249。 あなたがすることもできます EV コード署名証明書を大規模に使用する eSigner を使用してクラウドで。

今すぐ注文

環境変数

  • USERNAME: SSL.com アカウントのユーザー名。 (必須)
  • PASSWORD:SSL.comアカウントのパスワード(必須)
  • CREDENTIAL_ID: 証明書に署名するための資格情報 ID。 credential_id が省略され、ユーザーが eSigner コード署名証明書を XNUMX つしか持っていない場合、CodeSignTool はデフォルトでそれを使用します。 ユーザーが複数のコード署名証明書を持っている場合、このパラメーターは必須です。 (必須)
  • TOTP_SECRET: OAuth TOTP シークレット。 の詳細情報にアクセスできます。 https://www.ssl.com/how-to/automate-esigner-ev-code-signing (必須)
  • ENVIRONMENT_NAME : 「TEST」または「PROD」環境。 (必須)

入力

  • 入力ファイルパス: 署名するコード オブジェクトのパス。 (必須)
  • 出力ディレクトリのパス: 署名されたコード オブジェクトが書き込まれるディレクトリ。 output_path を省略すると、-file_path で指定されたファイルが署名付きファイルで上書きされます。

ワークフローのコンポーネントを準備する (.NET コード DLL 署名)

  1. .circleci フォルダーを作成する

コード署名ワークスペースで、 .circleci フォルダー. その下に、 config.yml ファイル.

  1. CI バージョンを設定する
バージョン:2.1
 
  1.  ワークフローを介してジョブを呼び出します。 ワークフローは、実行する一連のジョブを調整します。 このパイプラインのジョブは以下で構成されています

以下を参照してください。 https://circleci.com/docs/2.0/configuration-reference/#workflows

ワークフロー:
 
  1. ワークフローの名前を書きます。
  ドットネット:
 
  1. ワークフロー内で、実行するジョブを定義します。
 ジョブ: - ビルド - 署名: 必要: - ビルド
 

ビルド ステージを定義する

  1. ワークフローで後で呼び出されるジョブを定義します。

 (参照: https://circleci.com/docs/2.0/configuration-reference/#jobs)

ジョブ: ビルド:

 

  1. 環境変数を作成する
  • 環境変数は、サンプルを読みやすくするために使用されます。 上記の署名ワークフローの例のスクリーンショットでは、PROJECT_NAME、PROJECT_VERSION、および DOTNET_VERSION がオプションで省略されています。 これらの省略があっても、署名は続行できます。  
  環境: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 ワークスペース: /home/circleci/project

 

  1.  Docker executor を定義します: (https://circleci.com/docs/2.0/executor-types/)

    # Dockerhub からイメージを指定するか、CircleCI の Developer Hub から便利なイメージの XNUMX つを使用できます。

 ドッカー: - 画像: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. ジョブの作業ディレクトリを配置します
  作業ディレクトリ: /home/circleci/project

 

  1. ジョブにステップを追加する

    参照: https://circleci.com/docs/2.0/configuration-reference/#steps

  手順:

 

  1.  ワークフローがアクセスできるように、ソース コードをチェックアウトします。
    - チェックアウト

 

  1. アーティファクト ディレクトリを作成して、署名済みおよび未署名のアーティファクト ファイルを保存します
    - run: name: Create Artifacts Directory コマンド: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages

 

  1.  dotnet プロジェクトまたはソリューションとそのすべての依存関係をビルドします。
      - run: name: Build Dotnet Project コマンド: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. アーティファクトをアーティファクト ディレクトリにコピーする
  • この書面による署名の例のワークフローでは、複数のプロジェクト タイプが作成されました。 これが、サブフォルダーを作成することによって、異なるプロジェクト タイプのファイルが保持された理由です。 Dotnet プロジェクト用に「dotnet」という名前のサブフォルダーが作成されました。 上記のデモのスクリーンショットでは、「dotnet」という名前のサブフォルダーを作成する必要がなかったため、スクリプトには含まれていませんでした。
  - run: name: Copy Artifacts コマンド: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. アーティファクトを署名用のアーティファクト ディレクトリに永続化する
  - persist_to_workspace: root: . パス: - パッケージ/*
 

署名段階を定義する

  1. 署名ジョブを定義する
 サイン:

 

  1. 環境変数を作成する
  • 上のスクリーンショットでは、sign コマンドは、環境変数ではなく、sign スクリプトで直接定義されています。 B他の方法は、CircleCI で正しく署名できます。
  • 環境変数は、サンプルを読みやすくするために使用されます。 上記のサンプル ワークフローのスクリーンショットでは、一部の変数がオプションで含まれていませんでした。 これらの省略があっても、署名は続行できます。  
    環境: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project

 

  1.     ジョブの作業ディレクトリを Circle-CI に配置する
 作業ディレクトリ: /home/circleci/project

 

  1. 署名するアーティファクト名
  • 'artifact-name' 値は複数のプロジェクトのオプションです 'artifact-name' パラメーターが追加され、すべてのプロジェクト タイプで同じ署名部分を使用できるようになりました。 スクリーンショットの例は単一のプロジェクトに基づいているため、含める必要はありませんでした。
    パラメータ: アーティファクト名: タイプ: 文字列 デフォルト: ''

 

  1. docker executor を定義します。

 追加の参照については、以下を参照してください。 https://circleci.com/docs/2.0/executor-types/

       Dockerhub からイメージを指定するか、CircleCI の Developer Hub から便利なイメージの XNUMX つを使用できます。

       以下の Docker イメージ タグを、アプリケーションの openjdk バージョンに必ず更新してください。

       利用可能な CircleCI Docker Convenience Images のリストは、こちらから入手できます。 https://circleci.com/developer/images/image/cimg/openjdk

   ドッカー: - イメージ: cimg/openjdk:17.0.3

 

  1. ジョブにステップを追加する

      追加の参照については、以下を参照してください。 https://circleci.com/docs/2.0/configuration-reference/#steps

    手順:

 

  1. アーティファクト ディレクトリを作成して、署名済みおよび未署名のアーティファクト ファイルを保存します
  - run: name: Create Artifacts Directory コマンド: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages

 

  1. アーティファクト ファイルにアクセスするためにワークスペースにアタッチする
   - attach_workspace: at: /home/circleci/project

 

  1. Circle-CI で CodeSigner の Docker を有効にする
 - setup_remote_docker: name: リモート Docker のセットアップ バージョン: 19.03.13 docker_layer_caching: true

 

  1. Github レジストリから Codesigner Docker イメージをプルする
        - run: name: Docker Pull Image コマンド: | docker pull ghcr.io/sslcom/codesigner: 最新の docker pull alpine:3.4

 

  1. 成果物が CodeSignTool で署名されるステップを記述します。
 - run: name: Sign Artifact File コマンド: | docker create -v /codesign/packages --name codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -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:latest ${COMMAND} -input_file_path=/codesign/packages/<< parameters.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parameters.artifact-name >> ${ WORKSPACE}/artifacts/<< parameters.artifact-name >>

 

  1. ワークフローからアーティファクトをアップロードするステップを記述して、ジョブ間でデータを共有し、ワークフローが完了したらデータを保存できるようにします
    - store_artifacts: name: Upload Signed Files path: /home/circleci/project/artifacts/<< parameters.artifact-name >> 宛先: << parameters.artifact-name >>
 

コマンドラインで新しいリポジトリを作成する

GitHub アカウントのプロジェクトの場所からプッシュ コマンド コンポーネントをコピーします。

エディターにすべてのプッシュ コマンド コンポーネントを含めます

SSL.com EV コード署名 証明書は、最高レベルの検証により、不正な改ざんや侵害からコードを保護するのに役立ちます。 年間$ 249。 あなたがすることもできます EV コード署名証明書を大規模に使用する eSigner を使用してクラウドで。

今すぐ注文

GitHub に統合されたリポジトリを使用して、CircleCI でプロジェクトをセットアップする

すべての環境変数を定義する

プロジェクトの実行中に、[プロジェクト設定] ボタンをクリックしてから、[環境変数] をクリックして変数を定義します。

各変数の値を配置します

 環境変数を追加 ボタンをクリックして、プロジェクトに必要なすべての変数の名前と値を追加します。

プロジェクトがビルドされるのを待ちます

[ワークスペースに永続化] をクリックします

ワークスペース アーカイブが正常にアップロードされるまで少し待ちます。

サインボタンをクリック

リモート Docker がセットアップされるのを待ちます

ファイルのサイズによっては、XNUMX 分以上かかる場合があります。

アーティファクトが署名されるのを待ちます

 アーティファクト タブ

クリックすると アーティファクト、コード署名に成功したファイルを確認できます。 コード署名が成功したことも、CircleCI から通知されます。

Docker イメージのソース コードが含まれ、その使用方法が説明されている SSL.com Github リポジトリを参照できます: https://github.com/SSLcom/ci-images

サンプル CircleCI パイプライン

私たちが作成したサンプル CircleCI パイプラインを確認してください github.com/SSLcom/codesigner-circleci-sample

その他の CI/CD リモート署名統合ガイド

カスタムソリューションが必要ですか? 

専門知識とXNUMXつ星のサポートスタッフにより、カスタムソリューションやエンタープライズレベルの大量署名割引についてお客様と協力する準備ができています。 以下のフォームにご記入ください。ご連絡いたします。

SSL.com のニュースレターを購読する

SSL.comからの新しい記事と更新をお見逃しなく

常に最新情報を入手して安全を確保

SSL.com サイバーセキュリティの世界的リーダーであり、 PKI そしてデジタル証明書。サインアップして、最新の業界ニュース、ヒント、製品のお知らせを受け取ります。 SSL.com.

フィードバックをお待ちしております

アンケートにご協力いただき、最近のご購入についてのご意見をお聞かせください。