Skip to content
Latchkey

HTTPS とは? 暗号化された HTTP の解説

HTTPS は、暗号化された TLS 接続の上で運ばれる素の HTTP であり、クライアントとサーバー間でやり取りされるデータが転送中もプライベートかつ改変されないままに保たれます。

URL が https で始まる場合、リクエストとレスポンスはマシンを離れる前に暗号化され、宛先でのみ復号されます。これにより、認証情報、トークン、payload が盗聴や改ざんから保護されます。CI パイプラインは公開ネットワーク上で秘密情報や artifact を移動させるため、通信するほぼすべてのエンドポイントが HTTPS を使用します。

TLS が HTTP に加えるもの

HTTPS は HTTP の下に TLS を重ねます。TLS はトラフィックを暗号化し、証明書でサーバーの identity を検証し、改ざんを検出します。HTTP メッセージ自体は変わらず、暗号化されたトンネルの中を通るだけです。

証明書のチェック

handshake の間、サーバーは信頼された認証局によって署名された SSL/TLS 証明書を提示します。クライアントは、接続を信頼する前に、証明書が有効で、期限切れでなく、hostname に一致することを確認します。

CI が HTTPS を必要とする理由

  • 秘密情報やトークンが、デプロイや registry の API まで安全に運ばれます。
  • artifact が転送中に改ざんされることがありません。
  • webhook の payload が完全性を保ったまま届きます。

パイプラインでよくある HTTPS 障害

期限切れの証明書、信頼されていないカスタム認証局、runner 上での CA bundle の欠落は、"certificate verify failed" と表示される TLS handshake エラーを引き起こします。これらは一時的な不具合ではなく設定の問題であるため、リトライしても解決しません。

デプロイ時の HTTPS

パイプラインが Web アプリを出荷するとき、通常は証明書を保持する load balancer や CDN で HTTPS を終端します。パイプラインはデプロイの一環として証明書をローテーションまたはプロビジョニングすることもあるため、古い証明書は build が通っていても本番サイトを壊すことがあります。

一時的か恒久的かの見分け方

転送の途中で reset される HTTPS 接続の切断は多くの場合一時的で、リトライする価値があります。一方 "certificate verify failed" は修正されるまで恒久的です。Latchkey の runner は一時的な接続切断を自動的にリトライしつつ、本物の証明書エラーは明確に表面化させるため、実際の問題を修正できます。

重要なポイント

  • HTTPS は、トラフィックを暗号化・認証する TLS トンネル内の HTTP です。
  • 接続が成功するには、有効で信頼され、一致する証明書が必要です。
  • 証明書エラーは恒久的で修正が必要ですが、接続の切断は通常リトライ可能です。

関連ガイド