スキームがポートを決める
Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 39/47。
http:// と https:// の違いは、文字が1つ違うだけではありません。スキームによって、使用するデフォルトポートが80か443か、そして何かを送信する前にTLSハンドシェイクを開始するかどうかという、2つの点が決まります。
そのハンドシェイクは、リクエスト行が書き込まれる前に行われる最初の処理です。双方が暗号化方式に合意し、サーバーが証明書を提示します。その後になって初めて、あなたが知っているHTTPが暗号化されたチャネル内で送信されます。
つまり、ポートはTLSを話すか、話さないかのどちらかです。通常のHTTPポートに対してhttps://で要求すると、丁寧なフォールバックはありません。ハンドシェイクは直ちに失敗し、curlはSSL接続エラーを示す終了コード35を報告します。
これは覚えておく価値があります。サーバーが停止しているように見えても、実際には1つ別のスキームで通常のHTTPを問題なく提供している可能性があるからです。
チャレンジ
難しいプレーンな HTTP サーバーに TLS を要求し、拒否される様子を確認します。
- 通常の方法でポート 9129 でフォルダーを提供します。これはプレーンな HTTP です
https://127.0.0.1:9129/にリクエストを送り、curl の終了コードに続けてtls=を出力します
期待される出力:
tls=3535 は SSL 接続エラーを示す curl のコードです。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ターミナルで学ぶネットワークのすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド