Cloud Code Signing と GitHub Actions の統合

このガイド記事では、継続的インテグレーション/継続的デリバリー (CI/CD) セットアップでの自動コード署名のために eSigner を GitHub Actions と統合する方法を示します。

eSigner は、世界中のソフトウェア開発者から信頼されているクラウドベースの署名プラットフォームであり、USB トークンやその他の専用ハードウェアを必要とせずにエンタープライズ コード署名を実行できます。  eSigner のコンポーネントの XNUMX つは CodeSignTool です。これは、コード署名を自動化したい開発者にとって非常に効果的なプライバシー主導のコマンド ライン ユーティリティです。  次のセクションでは、eSigner CodeSignTool を使用して GitHub Actions で Java コード (Maven) に署名する方法を示します。

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

今すぐ注文

使用法

- 名前: CodeSignTool を使用してアーティファクトに署名する

  使用しています: sslcom/actions-codesigner@develop

  と:

  •      CodeSignTool コマンド:

     – get_credential_ids: ユーザーに関連付けられた eSigner 資格情報 ID のリストを出力します。

     – credential_info: クレデンシャル ID に関連するキーと証明書の情報を出力します。

     – sign: 署名およびタイムスタンプ コード オブジェクト。

     – batch_sign: XNUMX つの OTP で複数のコード オブジェクトに署名し、タイムスタンプを付けます。

     – hash: 後で batch_hash_sign コマンドで使用するためにハッシュを事前に計算します。

     – batch_sign_hash: hash コマンドで事前に計算されたハッシュに署名します。

        コマンド: 符号

 

  • SSL.com アカウントのユーザー名。

         username: ${{secrets.ES_USERNAME}}

  •  SSL.com アカウントのパスワード。

         password: ${{secrets.ES_PASSWORD}}

  • 証明書に署名するための資格 ID。

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • 署名するコード オブジェクトのパス。

          file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar

  • 署名されたコード オブジェクトが書き込まれるディレクトリ。

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

入力

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

Java コード (Maven) JAR 署名のワークフロー例

ワークフローのコンポーネントを準備する

  1. エディターに Github フォルダーを作成します。 フォルダーにワークフローを含め、フォルダーの下に yml ファイルを作成します。
    1. プロジェクトの名前と関連するワークフローのタイプ
    名前: Maven のビルドと署名
     
    1. プッシュでこのワークフローをトリガーする
    オン: プッシュ
     
    1. 環境変数を作成する
    • 環境変数は、サンプルを読みやすくするために使用されます。 上記のサンプル ワークフローのスクリーンショットでは、PROJECT_NAME、PROJECT_VERSION、および MAVEN_VERSION がオプションで省略されています。 これらの省略があっても、署名は続行できます。
    env: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. エディターでジョブを定義する
    ジョブ: build-and-sign-jar:
     
    1. Ubuntu Runner でジョブを実行する
        ランオン: ubuntu-latest
     
    1. 名前を作成します。 ワークフローが実行されると、これがログに記録される名前になります。
      名前: Maven を使用した Java 上の CodeSigner
     

ソース コードのチェックアウト、Java および Maven 環境のセットアップ、アーティファクト ディレクトリの作成の手順を概説します。

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

   手順: - 用途: actions/checkout@v2
 

  2) ワークフローで使用する Java および Maven 環境をセットアップします。

    - name: インストール Maven と Java の使用: s4u/setup-maven-action@v1.3.1 with: java-version: '${{env.JAVA_VERSION}}' maven-version: '${{env.MAVEN_VERSION}}'

 

      3) アーティファクト ディレクトリを作成して、署名済みおよび未署名のアーティファクト ファイルを保存します。

 - 名前: ディレクトリの作成 shell: bash run: | mkdir ${GITHUB_WORKSPACE}/アーティファクト mkdir ${GITHUB_WORKSPACE}/packages

 

      4) Maven プロジェクトまたはソリューションとそのすべての依存関係を構築します。

      jar ファイルが作成されたら、署名用に「packages」フォルダーにコピーします。

  • この書面による署名の例のワークフローでは、複数のプロジェクト タイプが作成されました。 これが、サブフォルダーを作成することによって、異なるプロジェクト タイプのファイルが保持された理由です。 Java プロジェクト用に「java」という名前のサブフォルダーが作成されました。 上記のデモのスクリーンショットでは、「java」という名前のサブフォルダーを作成する必要がなかったため、これはスクリプトに含まれていません。
 - 名前: Java プロジェクトのビルド シェル: bash 実行: | mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.瓶
 

署名およびアップロード ジョブの手順の概要を説明する

  1. 署名ジョブは、作成された JAR (アーティファクト) ファイルが CodeSignTool で署名されるステップです。
 - 名前: Sign Artifact uses: sslcom/actions-codesigner@develop with:

           署名とタイムスタンプ コード オブジェクト。

コマンド: サイン

           SSL.com アカウントのユーザー名。

ユーザー名: ${{secrets.ES_USERNAME}}

           SSL.com アカウントのパスワード。

パスワード: ${{secrets.ES_PASSWORD}}

           証明書に署名するための資格 ID。

credential_id: ${{secrets.CREDENTIAL_ID}}

           OAuth TOTP シークレット (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret: ${{secrets.ES_TOTP_SECRET}}

           署名するコード オブジェクトのパス。 (DLL、JAR、EXE、MSI ファイル vb…)

  ファイルパス: ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           署名されたコード オブジェクトが書き込まれるディレクトリ。

output_path: ${GITHUB_WORKSPACE}/アーティファクト

 

  1. アップロード ジョブは、ワークフローのアーティファクトがアップロードされるステップであり、ジョブ間でデータを共有し、ワークフローが完了したらデータを保存できます。
 - name: Upload Signed Files uses: actions/upload-artifact@v2 with: name: ${{env.PROJECT_NAME}}.jar path: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Github Marketplace からビルド アーティファクト アップローダを取得する

コーディング スクリプトを確認する

構築、署名、およびアップロード ジョブの全体的なコーディング スクリプトは、以下の画像のようになります。 署名プロセスがスムーズに実行されるように、スクリプト内のスペルミスや誤った改行などのエラーを必ず修正してください。

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

今すぐ注文

環境変数を定義する

Github アカウントでプロジェクトの場所に移動します。 クリック   タブ。 クリック 新しいリポジトリ シークレット ボタンをクリックして、コードの署名に必要な各環境変数の値を配置します。

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

Github 上のプロジェクトの場所に進み、プッシュ コマンドの各コンポーネントをコピーします。

プロジェクトをプッシュする

各プッシュ コマンド ラインをコード エディターに含めます。 完了すると、コードは自動的に Github にプッシュされます。

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

署名済みファイルをアップロードする

署名済みファイルをクリックしてアップロードします。

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

サンプル Github アクション パイプライン


私たちが作成した Github Actions パイプラインのサンプルをご覧ください github.com/SSLcom/codesigner-github-sample  

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

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

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

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

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

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

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

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

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