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

これは、eSigner CodeSignTool を使用して GitLab CI で自動コード署名を行う方法に関するチュートリアルです。 

CodeSignTool は、eSigner の一部を形成する安全なコマンド ライン ユーティリティです。当社のクラウド コード署名環境は、エンタープライズ コード署名を安全かつ効率的に簡単な方法で実行できるため、ソフトウェア発行者と開発者にメリットをもたらします。  以下のサンプル ワークフローは、eSigner を使用して GitLab CI で署名されている .NET DLL コードを示しています。

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 署名のサンプル ワークフロー

yml ファイルを作成する

ジョブをステージにグループ化します。 次のステージを実行する前に、XNUMX つのステージのすべてのジョブを完了する必要があります。

ステージ: - ビルド - サイン
 

環境変数をグローバルに定義します。 ジョブ レベル プロパティは、グローバル変数をオーバーライドします。

  • 環境変数は、サンプルを読みやすくするために使用されます。 上記のサンプル ワークフローのスクリーンショットでは、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. ランナーによって実行されるシェル スクリプトを定義します。 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. ジョブが成功した場合にジョブに添付するファイルとディレクトリのリストを指定します。
  • '期限切れ' プロパティを使用すると、一定期間後にファイルを削除できます。 その使用はオプションです。 これが、上記のサンプル ワークフローのスクリーンショットにこのプロパティが表示されていない理由です。
成果物: パス: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 分
 

サインステージを定義する

以下は、dll アーティファクトに署名するジョブの定義です。

署名ドットネット アーティファクト:

 

  1. ジョブが実行されるステージを定義します。
  ステージ:サイン

 

  1. 使用するイメージの完全な名前を配置します。 必要に応じて、レジストリ部分を含める必要があります。
 画像: docker:19.03.0

 

  1. サービスを定義します。 これは `image` プロパティに似ていますが、指定されたサービスを `image` コンテナにリンクします。
サービス: - docker:19.03.0-dind

 

  1. 特定のジョブの環境変数を定義します。
  • 上のスクリーンショットでは、sign コマンドは、環境変数ではなく、sign スクリプトで直接定義されています。 Bその他の方法は、TravisCI で正しく署名できます。
  変数: コマンド: "sign"

 

  1. ジョブの*前に*実行するスクリプトを定義します。 グローバルまたはジョブごとに設定できます。
  before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. ランナーによって実行されるシェル スクリプトを配置します。 CodeSignTool Docker イメージを使用して .NET dll アーティファクトに署名する
スクリプト: - docker pull ghcr.io/sslcom/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/sslcom/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. アーティファクトをロードする前のステージのジョブ名のリストを指定します。
依存関係: - build-dotnet

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

今すぐ注文

ビルド段階を開始する

リポジトリを作成する

以下のスクリーンショットに示すように、Gitlab のコマンド ライン手順を参照してください。

フォルダーをプッシュする

これを行うには、 ターミナル メニュー、続いて 新しいターミナル.

ターミナルにプッシュ スクリプトを入力して、プロジェクトをプッシュします。 

ビルドボタンをクリックします

パイプラインをトリガーした後、ビルドに進みます

ビルドが成功したかどうかを確認する  

サインステージを開始する

アーティファクトへの署名に進む

コード署名が成功したかどうかを確認する

署名済みファイルをダウンロードできるようになりました

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

サンプル Gitlab CI パイプライン

作成した Gitlab CI パイプラインのサンプルを確認してください github.com/SSLcom/codesigner-gitlabci-sample

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

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

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

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

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

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

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

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

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