GitHubのSHA-1 HTTPS廃止に備える移行ガイド|影響範囲・確認手順・CI/CD対応

GitHubへのHTTPS接続で、古いSHA-1前提の証明書チェーンや旧式のHTTPSクライアントを使っているチームは、2026年7月14日のブラウンアウト前に棚卸しと更新を始めるべきです。結論から言うと、影響を受ける可能性があるのはブラウザだけではありません。GitHub APIを呼び出す社内ツール、HTTPSでpush/pullするGitクライアント、CI/CD内のcurlやSDK、プロキシ、コンテナイメージまで確認対象です。

GitHubは2026年4月20日、GitHubおよびCDNのHTTPS通信からSHA-1の利用を段階的に廃止すると発表しました。対象はgithub.com、GitHub Enterprise Cloud、GitHub Enterprise Cloud with Data Residencyで、GitHub Enterprise Server自体は対象外です。2026年7月14日に一時的な無効化テスト、2026年9月15日に完全無効化が予定されています。(The GitHub Blog)

目次

GitHubのSHA-1 HTTPS廃止で何が変わるのか

今回の変更は、GitのコミットIDに使われるSHA-1の話ではありません。対象は、GitHubへHTTPSで接続する際のTLSや証明書まわりです。

つまり、次のような通信が影響を受ける可能性があります。

確認対象具体例影響が出やすいケース
ブラウザGitHubのWeb画面閲覧古いOS、更新されていないブラウザ、社内端末の固定イメージ
Gitクライアントgit clone、git fetch、git pushをHTTPSで実行古いGit、古いOpenSSL/libcurl、古いWindows端末
APIクライアントREST API、GraphQL API、GitHub Apps、社内Bot古いJava/Python/Node.js、古いコンテナベースイメージ
CI/CDJenkins、GitLab CI、self-hosted runner、社内ビルドサーバー長期間更新していないランナー、古いDockerイメージ
ネットワーク機器TLS検査プロキシ、SSLインスペクション、社内CAプロキシ側の証明書チェーンやTLS実装が古い
CDN経由の取得ソースアーカイブ、rawファイル、依存ファイルの取得github.com本体だけをテストしてCDN経路を見落とす

特に危険なのは、「開発者のPCでは問題ないが、本番デプロイ用の古いCIサーバーだけ失敗する」パターンです。GitHubのHTTPS接続は、開発・ビルド・デプロイ・セキュリティスキャンの複数工程で使われるため、個人端末だけで判断すると漏れが出ます。

廃止スケジュールと移行期限

GitHubが公表しているスケジュールでは、まずブラウンアウトで影響範囲を可視化し、その後に完全無効化します。ブラウンアウトは「一時的にSHA-1を無効化する予行演習」と考えると分かりやすいです。(The GitHub Blog)

日付内容対応の意味
2026年4月20日GitHubがSHA-1廃止を告知移行計画を開始するタイミング
2026年7月14日 00:00〜18:00 UTCブラウンアウト。GitHub側で一時的にSHA-1を無効化影響を受けるクライアントを本番相当で検出できる
2026年7月14日 09:00〜2026年7月15日 03:00 JST日本時間でのブラウンアウト期間日本のチームは業務時間中から深夜帯まで監視が必要
2026年9月15日GitHubおよびパートナーCDNで完全無効化未対応のHTTPSクライアントは恒久的に失敗する可能性がある

注意したいのは、7月のブラウンアウトではCDNが対象外とされている点です。一方、9月の完全無効化ではGitHubとパートナーCDNが対象に含まれます。ブラウンアウトでgit cloneだけ成功しても、rawファイル取得、リリースアーカイブ取得、依存関係のダウンロードまで安全とは限りません。

まず影響を受けるチームか判断する

最初にやるべきことは、「SHA-1を使っているか」を暗号の専門家だけで調べることではありません。GitHubへHTTPS接続している場所を洗い出し、古いTLSスタックが残っていないかを確認することです。

影響を受けやすい環境

次のいずれかに当てはまる場合は、優先的に確認してください。

リスクの高い環境見るべきポイント
長期間更新していないLinuxサーバーOpenSSL、curl、Git、CA証明書パッケージ
古いWindows端末Git for Windows、Windowsの証明書ストア、Schannel設定
古いJavaアプリJDK/JRE、信頼ストア、HTTPクライアントライブラリ
Python 2系や古いPython 3系OpenSSL連携、requests、コンテナイメージ
古いNode.jsNode本体、OpenSSLバージョン、GitHub API SDK
社内プロキシ経由の通信TLSインスペクション、社内CA、プロキシ製品のファームウェア
self-hosted runnerやJenkinsランナーOS、ビルドイメージ、ジョブ内のgitやcurl
ベンダー製の連携ツールGitHub Apps、Webhook処理、ソース取得機能

「GitHubのWeb画面が開けるから大丈夫」と判断するのは危険です。ブラウザは最新でも、CIのコンテナ内で使っているcurlやJavaランタイムが古いことはよくあります。

接続テストで確認すべきコマンド

まずは代表的な接続経路をテストします。テストは、開発者PC、本番CI、self-hosted runner、社内プロキシ配下の端末、コンテナ内のそれぞれで実行してください。

ブラウザの簡易確認

GitHubは、SHA-1がすでに無効化されている確認先としてgithub.devを案内しています。ブラウザで問題なく表示できる場合、そのブラウザはより新しいHTTPS構成に対応していると判断できます。(The GitHub Blog)

ただし、これはブラウザの確認にすぎません。APIクライアント、Gitクライアント、CI/CDの確認は別途必要です。

Gitクライアントの確認

git --version
git remote -v
git ls-remote https://github.com/github/docs.git HEAD

失敗する場合は、詳細ログを取得します。

GIT_CURL_VERBOSE=1 git ls-remote https://github.com/github/docs.git HEAD

確認すべきポイントは、Gitのバージョンだけではありません。Gitが内部で使うHTTPSバックエンド、OSの証明書ストア、OpenSSLやlibcurlの更新状況も関係します。

git config --show-origin --get http.sslBackend

WindowsではGit for WindowsとOS側の証明書ストア、LinuxではOpenSSL/libcurl/CA証明書パッケージ、macOSではシステムキーチェーンやGitの導入方法を確認します。

curlとOpenSSLの確認

curl -Iv https://github.com/
curl -Iv https://api.github.com/
curl -Iv https://github.dev/

OpenSSLが使える環境では、バージョンと証明書チェーンの確認も行います。

openssl version -a
openssl s_client -connect github.com:443 -servername github.com </dev/null

ここで失敗する場合は、アプリケーションではなくOSやTLSライブラリの問題である可能性が高くなります。

言語ランタイムの確認

GitHub APIを使う社内ツールやBotは、言語ランタイムごとに確認します。

python -c "import ssl, sys; print(sys.version); print(ssl.OPENSSL_VERSION)"
node -p "process.version + ' OpenSSL ' + process.versions.openssl"
java -version

Javaの場合は、アプリが使っているJDK/JREと実行環境の信頼ストアが一致しているかも確認してください。サーバー上では新しいJavaを入れていても、サービス定義やコンテナが古いJREを参照していることがあります。

移行の進め方:更新すべき順番

SHA-1廃止への対応は、単に「証明書を更新する」作業ではありません。実務では、GitHubへ接続するクライアント側のTLS環境を新しくする作業になります。

優先順位は本番影響から決める

最初に直すべきなのは、開発者の個人PCではなく、止まるとリリースや障害対応に直結する経路です。

優先度対象理由
最優先本番デプロイ用CI/CD、リリースパイプライン失敗するとデプロイやロールバックが止まる
高セキュリティスキャン、SBOM生成、依存関係取得脆弱性対応や監査に影響する
高GitHub APIを使う社内Bot、GitHub Apps承認、通知、自動化が止まる可能性がある
中開発者PC、社内VDI個別対応できるが問い合わせが集中しやすい
中検証環境、古い検証サーバー普段使わないため見落とされやすい

実際に更新するコンポーネント

移行では、次のコンポーネントをまとめて更新します。

  • OSのセキュリティ更新
  • CA証明書パッケージ
  • Git
  • curl/libcurl
  • OpenSSL、LibreSSL、またはOS標準のTLSバックエンド
  • Java、Python、Node.js、Goなどのランタイム
  • GitHub API SDKやHTTPクライアントライブラリ
  • Dockerベースイメージ
  • TLS検査プロキシや社内CA関連の設定

GitHub Docsでは、HTTPSのクローンエラーについて、古いGitやアクセス権限の問題が原因になることがあると案内しています。今回のSHA-1廃止対応では、認証エラーとTLSエラーを混同しないことが重要です。(GitHub Docs)

ありがちな失敗と回避策

失敗:GIT_SSL_NO_VERIFY=trueで回避する

TLSエラーが出たときに、証明書検証を無効化して回避するのは危険です。一時的に接続できても、中間者攻撃を検知できなくなります。CI/CDでこの設定が残ると、ソースコード取得や依存関係取得の信頼性が落ちます。

正しい対応は、証明書検証を無効化することではなく、OS、CA証明書、TLSライブラリ、Gitクライアントを更新することです。GitHub Docsでも、CAルート証明書が古い場合はpush/pullできなくなる可能性があり、一般にOS更新でCAも更新されると説明されています。(GitHub Docs)

失敗:ブラウザだけ更新して完了にする

ブラウザでGitHubが見えることと、CI内のgit fetchが成功することは別です。特にコンテナ内で古いディストリビューションを使っている場合、ホストOSが新しくてもコンテナ内のCA証明書やOpenSSLが古いままです。

次のように、実際のジョブと同じ環境で確認してください。

docker run --rm your-build-image:tag git --version
docker run --rm your-build-image:tag curl -Iv https://api.github.com/

失敗:CDN経路をテストしない

GitHub本体への接続だけでなく、rawファイル、リリースアーカイブ、ソースアーカイブ、依存関係取得も確認します。7月のブラウンアウトではCDNが対象外ですが、9月の完全無効化ではパートナーCDNも対象です。(The GitHub Blog)

CIで次のような処理がある場合は、棚卸し対象に入れてください。

  • GitHub Releasesからバイナリをダウンロードする
  • rawファイルをcurlで取得する
  • GitHub上のテンプレートや設定ファイルを取得する
  • セキュリティツールがGitHubから定義ファイルを取得する
  • IaCやビルドスクリプトがGitHub上の外部ファイルを参照する

SSHへの切り替えは暫定策として使えるか

HTTPSでのGit操作が期限までに更新できない場合、Gitのclone/push/pullについてはSSHへ切り替える選択肢があります。GitHub Docsでも、HTTPSでのクローンが難しい場合にSSHのclone URLを使う方法が案内されています。(GitHub Docs)

ただし、SSHは万能な代替策ではありません。

用途SSHで代替できるか補足
git clone可能リモートURLをSSH形式に変更する
git fetch / git push可能SSHキーやDeploy keyの管理が必要
GitHub API不可APIはHTTPSクライアントを更新する必要がある
ブラウザ閲覧不可ブラウザとOS更新が必要
rawファイル取得基本的に不可curlなどHTTPS経路の更新が必要

ファイアウォールの都合で通常のSSHが使えない場合、GitHubはSSHをHTTPSポートで使う方法も案内しています。この場合のホスト名はgithub.comではなくssh.github.com、ポートは443です。ただし、GitHub Enterprise ServerおよびGitHub Enterprise Cloud with Data Residencyでは、このSSH over HTTPS portはサポートされていません。(GitHub Docs)

トラブル発生時の切り分け表

ブラウンアウト中や完全無効化後に障害が起きた場合は、エラーメッセージだけで判断せず、発生場所と通信経路を分けて確認します。

症状可能性が高い原因最初に確認すること
ブラウザでGitHubが開けない古いブラウザ、OS、社内プロキシgithub.devが表示できるか、別ネットワークで再現するか
git cloneだけ失敗するGit、libcurl、TLSバックエンド、CA証明書git --version、GIT_CURL_VERBOSE=1のログ
APIクライアントだけ失敗する言語ランタイム、HTTPライブラリ、コンテナイメージPython/Node/JavaのバージョンとOpenSSL
社内ネットワークだけ失敗するTLS検査プロキシ、社内CAプロキシなしの回線で成功するか
401/403が出る認証・権限・トークンの問題PAT、GitHub App権限、SAML SSO認可
SSL certificate problemが出るCA証明書や証明書チェーンの問題OS更新、CA証明書パッケージ、プロキシ証明書
rawファイルやアーカイブだけ失敗するCDN経路の未確認GitHub本体以外のダウンロード先を棚卸し

401や403は、SHA-1廃止ではなく認証や権限の問題である可能性が高いです。TLSエラーと認証エラーを同じ障害として扱うと、不要な証明書変更やトークン再発行が増えます。

エンタープライズ管理者向けの移行チェックリスト

GitHub Enterprise Cloudを使う企業では、個別チーム任せにせず、管理者側で横断的に進めるのが安全です。

棚卸し

  • GitHubへHTTPS接続するCI/CD基盤を一覧化する
  • GitHub APIを使う社内ツール、Bot、GitHub Appsを洗い出す
  • self-hosted runner、Jenkins agent、古いVM、VDIを確認する
  • Dockerベースイメージとランタイムの更新状況を確認する
  • TLS検査プロキシ、社内CA、出口ゲートウェイを確認する
  • CDN経由のGitHubコンテンツ取得を確認する

検証

  • github.devでブラウザ確認を行う
  • git ls-remoteでHTTPS Git操作を確認する
  • curl -IvでGitHub APIへの接続を確認する
  • 代表的なCIジョブを本番と同じイメージで実行する
  • 社内プロキシ配下とプロキシ外の両方でテストする
  • 7月14日のブラウンアウト時間帯に監視とログ収集を行う

移行

  • 古いOSとランタイムを更新する
  • Git、curl、OpenSSL、CA証明書を更新する
  • 古いコンテナベースイメージを差し替える
  • HTTPS Git操作を継続するか、SSHへ切り替えるかを決める
  • APIクライアントはHTTPS対応を必ず完了する
  • GIT_SSL_NO_VERIFYなどの危険な暫定設定を削除する

周知

  • 2026年7月14日のブラウンアウト日時を開発部門へ通知する
  • 2026年9月15日の完全無効化までに対応期限を設定する
  • 失敗時の問い合わせ先をDevOps、セキュリティ、ネットワークで分ける
  • 影響が出たジョブ名、端末名、エラー内容を記録するテンプレートを用意する

どこまで対応すれば安全か

安全ラインは、「最新版にした」ではなく「実際の通信経路で成功した」です。次の4つを満たしていれば、移行リスクはかなり下げられます。

確認項目合格基準
ブラウザgithub.devが問題なく表示できる
Git操作本番CIと開発端末でHTTPSのgit ls-remoteが成功する
API通信社内ツールやBotがapi.github.comへ正常接続できる
CDN経路rawファイル、リリース、アーカイブ取得が成功する

逆に、次の状態は未対応と考えるべきです。

  • 開発者PCだけで確認している
  • CIのホストOSだけ更新し、コンテナ内を確認していない
  • GitHub APIを使う社内ツールを棚卸ししていない
  • TLS検査プロキシや社内CAを確認していない
  • 7月のブラウンアウトで失敗していないからCDNも安全だと判断している

まとめ:今やるべきこと

GitHubのSHA-1 HTTPS廃止は、セキュリティ強化として自然な流れですが、古いクライアントが残っている組織ではリリース停止やAPI連携障害につながります。

まずは、GitHubへHTTPS接続している場所を棚卸ししてください。次に、Git、curl、OpenSSL、CA証明書、言語ランタイム、コンテナイメージ、社内プロキシを実環境で確認します。Git操作だけならSSHへの切り替えも選択肢ですが、APIやブラウザ、CDN経由の取得はHTTPSクライアントの更新が必要です。

2026年7月14日のブラウンアウトは、単なる予定イベントではなく、本番相当で影響範囲を見つける機会です。9月15日の完全無効化までに、CI/CD、API連携、プロキシ、コンテナの順で対応を完了させましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次