Jenkins CI との Cloud Code Signing 統合

これは、eSigner CodeSignTool を使用して Jenkins で自動コード署名を行う方法に関するガイドです。

CodeSignTool は、大量の署名に適しており、さまざまな CI/CD プラットフォームとシームレスに統合するコマンド ライン ユーティリティです。 これは eSigner の一部を形成します。これは、エンタープライズ コード署名に対する効率的で安全、かつユーザー フレンドリーなアプローチを提供するリモート署名サービスです。

SSL.com EV コード署名 鑑定書 最高レベルの検証により、不正な改ざんや侵害からコードを保護するのに役立ち、わずかな費用で利用できます。 年間$ 249.

SSL.COM EV コード署名証明書を購入する

Jenkins ファイルを作成し、コード エディターでパイプラインを定義する

パイプライン { エージェント 任意のオプション { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Jenkins を構成して、コード エディターで .NET ツールを設定する

 ジェンキンスを管理する Jenkins ダッシュボードのタブ。

ページを下にスクロールし、[グローバル ツール構成] をクリックします。

下にスクロールしてをクリックします .NET SDK のインストール.

.NET SDK の値をコピーして、コード エディターに貼り付けます。

ツール { dotnetsdk "DOTNET_CORE_3.1.24" }

plugins.jenkins.io に移動し、.NET SDK プラグインをインストールします。

 ジェンキンスを管理する ダッシュボードで確認してください プラグインの管理 .NET SDK プラグインがインストールされているかどうかを確認します。

プラグインがインストールされていることを確認したら、.NET SDK のインストールに戻り、.NET SDK プラグインの正しいバージョンとリリースの詳細が設定されていることを確認します。 をクリックして進みます Save 

コード エディターで環境変数を設定する

environment { USERNAME = credentials('es-username') // SSL.com アカウントのユーザー名。 PASSWORD = credentials('es-password') // SSL.com アカウントのパスワード。 CREDENTIAL_ID = credentials('es-crendential-id') // 証明書に署名するための資格 ID。 TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP シークレット (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 環境名。 デモ口座の場合は「TEST」、そうでない場合は「PROD」になります。}

Jenkins ダッシュボードの各変数の値は、 セキュリティ> 管理 資格情報。

 

アーティファクト ディレクトリの作成、docker イメージのプル、.NET のビルド、およびアーティファクトのコード署名の段階を設定します。

 

        1) ストアの署名済みおよび未署名のアーティファクト ファイル用のアーティファクト ディレクトリを作成します。
 stage('Create artifacts directory') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Github レジストリから Codesigner Docker イメージをプルします。
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) dotnet プロジェクトまたはソリューションとそのすべての依存関係を構築します。 dll または exe ファイルが作成されたら、署名のために「packages」フォルダーにコピーします。
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) これは、作成された DLL (アーティファクト) ファイルが CodeSignTool で署名されるステップです。
stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/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:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } 投稿 { 常に { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

SSL.com EV コード署名 鑑定書 最高レベルの検証により、不正な改ざんや侵害からコードを保護するのに役立ち、わずかな費用で利用できます。 年間$ 249.

SSL.COM EV コード署名証明書を購入する

Github リポジトリを作成する

各プッシュ コマンド コンポーネントを Github にコピーします。

コード エディターの新しいターミナルでコマンドを記述して、コードをプッシュします。

コードをプッシュしたら、Github アカウントに移動し、プロジェクトの URL リンクをコピーします。

Jenkins アカウントに進み、 ジョブを作成する リンクをクリックします。

選択する マルチブランチ パイプライン, プロジェクトの名前を設定し、 OK

 分岐元選択 Gitの Github プロジェクトの URL リンクを貼り付けます。

下にスクロールします マルチブランチ パイプライン トリガーのスキャン。 チェックボックスをオンにします 特に実行しない場合は定期的に実行。 選択できます 2 minutes.

 Save 

Jenkins アカウントに戻り、プロジェクトをクリックして、パイプラインが開始されているかどうかを確認します

Jenkins プロジェクトをクリックして選択します。 マルチブランチ パイプラインを今すぐスキャン ダッシュボード。

 コンソール出力

下にスクロールして、コード署名が成功したかどうかを確認します

スクリプト全体

注: 署名プロセスがスムーズに実行されるように、スクリプト内のタイプミスや誤った改行を必ず修正してください。

パイプラインを定義する

パイプライン { エージェント 任意のオプション { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

ビルド ツールをインストールする

ツール { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

環境変数を作成する

environment { USERNAME = credentials('es-username') // SSL.com アカウントのユーザー名。 PASSWORD = credentials('es-password') // SSL.com アカウントのパスワード。 CREDENTIAL_ID = credentials('es-crendential-id') // 証明書に署名するための資格 ID。 TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP シークレット (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 環境名。 デモ口座の場合は「TEST」、それ以外の場合は「PROD」になります。}

ビルド ステージとサイン ステージのスクリプト

stage { // 1) 署名済みおよび未署名のアーティファクト ファイルを保存するためのアーティファクト ディレクトリを作成する stage('Create artifacts directory') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Github レジストリから Codesigner Docker イメージをプルする stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) dotnet プロジェクトまたはソリューションをビルドし、その依存関係。 // dll または exe ファイルが作成されたら、署名用に 'packages' フォルダーにコピーします stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/ Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) これは、作成された DLL (アーティファクト) ファイルが CodeSignTool で署名されるステップです。 stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/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:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } 投稿 { 常に { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
あなたは SSL.com Docker イメージのソース コードが含まれ、その使用方法が説明されている Github リポジトリ: https://github.com/SSLcom/ci-images 

サンプル Jenkins パイプライン

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

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

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

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

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

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

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

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

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

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