TLS とは? Transport Layer Security の解説
TLS(Transport Layer Security)は、ネットワーク接続を保護し、HTTPS にプライバシー、完全性、サーバー認証を与える暗号化プロトコルです。
TLS は SSL の後継であり、ブラウザに鍵アイコンを表示させるものです。あらゆる TCP 接続を暗号化で包み、通信相手のサーバーの identity を検証します。パイプラインは行うすべてのセキュアな呼び出しで TLS に依存しており、TLS の設定ミスはデプロイや API の障害のよくある原因です。
handshake
データが流れる前に、クライアントとサーバーは TLS handshake を行います。プロトコルバージョンと cipher で合意し、サーバーは証明書で identity を証明し、双方が共有セッション鍵を導出します。その後にはじめて、暗号化されたアプリケーションデータが始まります。
TLS が保証するもの
- 機密性:トラフィックはエンドツーエンドで暗号化されます。
- 完全性:転送中の改ざんが検出されます。
- 認証:サーバーは証明書によって自らが何者かを証明します。
バージョンが重要
TLS 1.2 と 1.3 が現行です。古い SSL や初期の TLS バージョンは非推奨で、しばしば拒否されます。TLS ライブラリが古い runner は、モダンなバージョンを要求するサーバーへの接続に失敗することがあります。
CI/CD における TLS
registry の pull、API 呼び出し、artifact の転送はすべて TLS 上を通ります。デプロイは頻繁に証明書をプロビジョニングまたは更新し、load balancer での TLS 終端は Web サービスを出荷する際の日常的な作業です。
TLS エラーの読み方
handshake の失敗、"certificate verify failed"、"unsupported protocol" は設定の問題です。CA の欠落、証明書を期限切れに見せる時計のずれ、バージョンの不一致などです。これらはリトライで解決しません。
一時的 vs 設定
handshake 中に reset される接続は一時的なネットワークの不具合であり得ますが、検証の失敗は本物の設定ミスです。Latchkey の runner は一時的な reset を自動的にリトライし、本物の TLS エラーはそのまま通すため、根本原因を修正できます。
重要なポイント
- TLS は接続を暗号化・認証し、HTTPS を安全にするものです。
- handshake は、データが流れる前に cipher をネゴシエートし、サーバー証明書を検証します。
- CI における TLS エラーのほとんどは、リトライ可能な不具合ではなく設定の問題です。