これは、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 アーティファクトをビルドするジョブの定義です。
ビルド ドットネット:
- ジョブが実行されるステージを定義します。
ステージ:ビルド
- 使用するイメージの完全な名前を配置します。 必要に応じて、レジストリ部分を含める必要があります。
画像: mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- ジョブの*前に*実行するスクリプトを定義します。 グローバルまたはジョブごとに設定できます。
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages
- ランナーによって実行されるシェル スクリプトを定義します。 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
- ジョブが成功した場合にジョブに添付するファイルとディレクトリのリストを指定します。
- '期限切れ' プロパティを使用すると、一定期間後にファイルを削除できます。 その使用はオプションです。 これが、上記のサンプル ワークフローのスクリーンショットにこのプロパティが表示されていない理由です。
成果物: パス: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 分
サインステージを定義する
以下は、dll アーティファクトに署名するジョブの定義です。
署名ドットネット アーティファクト:
- ジョブが実行されるステージを定義します。
ステージ:サイン
- 使用するイメージの完全な名前を配置します。 必要に応じて、レジストリ部分を含める必要があります。
画像: docker:19.03.0
- サービスを定義します。 これは `image` プロパティに似ていますが、指定されたサービスを `image` コンテナにリンクします。
サービス: - docker:19.03.0-dind
- 特定のジョブの環境変数を定義します。
- 上のスクリーンショットでは、sign コマンドは、環境変数ではなく、sign スクリプトで直接定義されています。 Bその他の方法は、TravisCI で正しく署名できます。
変数: コマンド: "sign"
- ジョブの*前に*実行するスクリプトを定義します。 グローバルまたはジョブごとに設定できます。
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages
- ランナーによって実行されるシェル スクリプトを配置します。 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
- ジョブが成功した場合にジョブにアタッチする必要があるファイルとディレクトリのリストを指定するために使用できるスクリプトを記述します。
成果物: パス: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 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 リモート署名統合ガイド
- クラウド コード署名と CircleCI の統合
- Cloud Code Signing と GitHub Actions の統合
- Jenkins CI との Cloud Code Signing 統合
- Cloud Code Signing と Travis CI の統合
- クラウド コード署名と Azure DevOps の統合
- クラウド コード署名と BitBucket の統合
- CI/CD サービスによるクラウド コード署名の自動化
カスタムソリューションが必要ですか?
専門知識とXNUMXつ星のサポートスタッフにより、カスタムソリューションやエンタープライズレベルの大量署名割引についてお客様と協力する準備ができています。 以下のフォームにご記入ください。ご連絡いたします。