hirakiucの日記

いろいろ

TLS Next Protocol Negotiation (NPN)

nginx 1.5.0に含まれてるspdy moduleを有効にしたので、せっかくならとspdyを設定してみたくてhttpsを仕込んでみたりしてたところ、また知らないものを見つけた。

spdyを設定ファイルで有効にしてconfigtestしてみると、どうもうちの環境だとOpenSSLが NPNをサポートしていないのでダメみたい。

TLS Next Protocol Negotiation (NPN)

最初の方だけ読んでみると、どうもhttpsで使うsslのセッションを確立する際の方法の様子。

では、これまでのssl セッションの確立はどーなってたのかとか少し漁ってみた。

ssl Handshake

さらっとgoogleさんで探してみると、sslのセッションを確立するときのやり取りはこんな感じらしい。

SSLの解説 - ipa

このサイトの "図4 SSL Handshake" を見てみると、クライアント/サーバ間でたくさんやり取りした後でようやくSSLのセッションが出来る様子。

現場にキく、Webシステムの問題解決ノウハウ 第3 "Webの表示速度を遅くする「SSLハンドシェイク」とは

でも同じような説明を見つけた。

Next Protocol Negotiation (NPN)

TLS Next Protocol Negotiation (NPN)

の途中にあるascii artぽい図を見るとわかるように、この仕様ではサーバ/クライアント間でやり取りをより少なくするものみたい。(だから、spdyに特化した仕様じゃないよと書かれてた)

sslのセッションを確立するための、よりシンプルな方法という感じ。


centos6のofficialなopenssl(1.0.0-27)はNPNを含んでいない事とopensslを入れ替えればいけそうな事は分かったので、ここで一旦打ち切り。