【新機能】Amazon CloudFrontがSSLセッションチケットに対応しました
はじめに
今日はCloudFrontのアップデートがありました!
ここでは"SSL Session Tickets"に注目したいと思います。
SSLセッションチケット
ここでSSLセッションチケットについておさらいしておきましょう。
- SSL通信では、サーバとクライアント間で暗号化に必要な通信処理を行う(SSLハンドシェイク)
- この「暗号化に必要な通信処理」はCPU/ネットワーク共に負荷の高い処理であるため、SSL通信は遅くなりがち。
- 最初に「暗号化に必要な通信処理」が完了したら、次回以降はセッションIDによってそのセッションを使い回すことで処理回数を減らす(SSLセッションキャッシュ)
- SSLセッションキャッシュではクライアントがサーバにセッションIDを渡し、サーバ側でそのセッションIDと一致したステートを使う。つまりサーバ側でステート管理をする必要がある。
- ステートをクライアント側に渡すことでサーバ側でステート管理をしない、という仕組みがSSLセッションチケット。
- セッションチケットを発行するための鍵をサーバ間で共有していれば、異なるサーバにまたがってSSLセッションの対応が出来る。
動作確認
SSLセッションチケット対応は、特に設定を追加すること無く適用されています。
SSLセッションチケットに対応していないサイトにSSL通信をしてみると、以下のようになります。
$ openssl s_client -connect www.example.com:443 -tls1 (--snip--) New, TLSv1/SSLv3, Cipher is RC4-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : RC4-SHA Session-ID: 2913DE821360914F333329CFA8C2E3DFBCE21EE67F069404EA18F568EE115E06 Session-ID-ctx: Master-Key: 572FDCCA75A285F55C301CE82FBEFDBB65B0B5E3D2876FEB818FEEDEF7D6318EF9A2C638CE604DA579E15D7B31E1A166 Key-Arg : None Start Time: 1408580598 Timeout : 7200 (sec) Verify return code: 0 (ok)
では、CloudFrontに対してSSL通信をしてみましょう。
$ openssl s_client -connect xxxxxxxx.cloudfront.net:443 -tls1 (--snip--) New, TLSv1/SSLv3, Cipher is AES256-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : AES256-SHA Session-ID: 4356D4B320D966E4954985DB2037F5F5164E96C6667B8010266C600F8B019E7C Session-ID-ctx: Master-Key: 4A61FB55FEB91CBFE770FE7A04D4CEAF6954141569551E01F79DC690F866E04C962273C9006CF3C03669D16A4D0A6138 Key-Arg : None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - f6 d0 19 41 9f 8d 6c 36-e1 66 4a b8 24 71 03 e7 ...A..l6.fJ.$q.. 0010 - 58 7e 27 c2 3d 99 d2 41-52 f9 bc 84 dc 65 bc 37 X~'.=..AR....e.7 0020 - 22 d1 a1 2e 14 7b 20 6d-d4 32 b0 8c ba 87 e7 b8 "....{ m.2...... 0030 - 35 5a ce 1f d2 f7 e5 6f-73 a2 8f 30 89 ad 2b 71 5Z.....os..0..+q 0040 - 96 3b 75 a3 b6 c8 9c 64-ae 0b 65 4e 55 e9 eb 1c .;u....d..eNU... 0050 - d6 af 45 41 8f 8e eb 48-49 76 c4 ff 8b 45 2b cd ..EA...HIv...E+. 0060 - 3e 06 6e f5 be 70 52 df-ab 99 1d 4e 20 a3 c7 71 >.n..pR....N ..q 0070 - c7 37 80 d3 68 f4 55 f3-62 26 7e b8 4f ae 46 54 .7..h.U.b&~.O.FT 0080 - 0c 4c 68 bb 25 6c 60 73-96 3f 01 fd 53 db 0d 5c .Lh.%l`s.?..S..\ 0090 - fd 5c f6 84 15 c8 45 af-38 5c 54 e7 c6 e6 24 5c .\....E.8\T...$\ Start Time: 1408580330 Timeout : 7200 (sec) Verify return code: 0 (ok)
TLS session ticketが渡されているのが分かります!
まとめ
今回のアップデートはOCSP Staplingなど、SSLのパフォーマンスアップに関連するものでした。以前の状態と現在の状態でベンチマークを取ると面白かったでしょうね。