Tech・1分で読める
GitHub AppsのJWTをローカルで生成する(bash + openssl)
GitHub Appのinstallation tokenを取得するためのJWTを、bash + opensslで最小構成で生成する手順。
#GitHub#GitHub Apps#JWT#bash#openssl
GitHub AppsのJWTをローカルで生成する(bash + openssl)
GitHub App の installation token を取得するには、まず GitHub App の JWT(RS256) が必要です。
手元でサクッと作る用のメモ。
BASH
#!/bin/bash
set -euo pipefail
# GitHub App settings から取得
client_id="" # App ID(もしくは Client ID 相当の値)
installation_id="" # Installation ID
# GitHub App の秘密鍵(PEM)
pem_file="./xxx.pem"
[ -f "${pem_file}" ] || { echo "PEM file not found: ${pem_file}" >&2; exit 1; }
now=$(date +%s)
iat=$((now - 60))
exp=$((now + 600))
b64enc() { openssl base64 | tr -d '=' | tr '/+' '_-' | tr -d '\n'; }
header_json='{"typ":"JWT","alg":"RS256"}'
header=$(printf '%s' "${header_json}" | b64enc)
payload_json="{\"iat\":${iat},\"exp\":${exp},\"iss\":\"${client_id}\"}"
payload=$(printf '%s' "${payload_json}" | b64enc)
header_payload="${header}.${payload}"
signature=$(printf '%s' "${header_payload}" | openssl dgst -sha256 -sign "${pem_file}" | b64enc)
JWT="${header_payload}.${signature}"
printf '%s\n' "JWT: ${JWT}"
# installation token request
curl --request POST \
--url "https://api.github.com/app/installations/${installation_id}/access_tokens" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer ${JWT}" \
--header "X-GitHub-Api-Version: 2022-11-28"関連記事
- 2025/11/18Slack と GitHub を連携してチーム開発を効率化する方法Slack に GitHub を連携することで、リポジトリの更新をリアルタイムで把握できます。初回セットアップから通知設定のカスタマイズまで、詳しく解説します。
- 2025/1/23GitHubリポジトリ管理:権限とロールの完全ガイドGitHub Organizationでのリポジトリ管理における権限とロールの違いを詳しく解説します。Write、Maintainer、Adminの権限差を理解し、適切な権限管理を行いましょう。
- 2026/7/9WAFとは何か?Webアプリケーション防火壁の基礎WAF(Web Application Firewall)が何を守り、何を守れないのかを整理する。AWS WAF の推奨マネージドルール構成、カスタムルール、設置位置、運用記事への導線もまとめる。
- 2026/5/31このブログの作り方: Next.jsでMarkdownを運用するこのブログで使っているMarkdown運用の実装記録。frontmatterの読み取り、Mermaid表示、ネスト箇条書き対応、記事追加時の手順を整理します。