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のセッションを確立するときのやり取りはこんな感じらしい。
このサイトの "図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を入れ替えればいけそうな事は分かったので、ここで一旦打ち切り。