0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GO】go:embedを利用して埋め込んだ秘密鍵をGithubActionsで利用する方法

Posted at

はじめに

GOの勉強で、JWTの生成を実装していました。
JWTの生成で使う秘密鍵と公開鍵は、go:embedを利用して埋め込む方法を取りました。
そして、秘密鍵と公開鍵は、セキュリティの問題があるのでGitHubにはコミットしないようにしました。
この場合、GithubActionsで、LintやTestが失敗するので、どうすればいいか調べました。

結論から言うと、GithubActionsには、シークレットという変数を登録して、GithubActionsを実行中に使える機能があるので、それを使います。
具体的には、秘密鍵と公開鍵の中身を変数として登録し、GithubActionsを実行するときに変数の中身を秘密鍵と公開鍵のファイルとして、出力するという方法となります。

GOのコード

GOのコード側では以下のように秘密鍵と公開鍵を利用しています。

//go:embed cert/secret.pem
var rawPrivKey []byte

//go:embed cert/public.pem
var rawPubKey []byte

シークレット変数を登録

  • GitHubリポジトリの「Settings」に移動
  • リポジトリページの右上にある「Settings」をクリック
  • 「Secrets and variables」→「Actions」を選択
  • 「Secrets and variables」の中から「Actions」を選択し、「New repository secret」をクリック
  • PRIVATE_KEYなど任意の名前を設定し、秘密鍵の値を入力して保存
  • 同様に公開鍵も、PUBLIC_KEYなどの任意の名前を設定し、保存

GithubActionsで利用する

Workflowで、以下のように秘密鍵と公開鍵を作成する

    steps:
      - uses: actions/setup-go@v3
        with:
          go-version: ">=1.18"
      - uses: actions/checkout@v3
      - name: Create dir
        run: mkdir -p auth/cert
      - name: Create secret key
        run: |
          echo "${{ secrets.SECRET_KEY }}" > auth/cert/secret.pem
      - name: Create public key
        run: |
          echo "${{ secrets.PUBLIC_KEY }}" > auth/cert/public.pem
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?