第三十一回スパルタンプログラミング
何がしたいか?何が問題か?を意識して変なとこでぐだぐだ考えないこと! 30分悩んで分からなかったら、早めにヘルプを出す。
会社の某先輩の3年振り返り回(以下)でしこたまやられたーン。
- ニパチ(7人):安くていいね
- SAYURI(7人):つい注文が増えちゃうね
- (どっかの)バル(5人):店員がかわいいね、シャンパンうめぇです
- ID(4人):テキーラダウン(入るときには終電を逃すことが確定していた)
- 長浜ラーメン(4人):沈黙
カラオケで朝まですごそうとする2人をふりきり、タクシーにのりこみヒロは千種へ、僕は本山の巣へ帰り着いた。
その次の日のこと。
やりたいこと
- 頭が復活したら、のんびりしたい。
- 「PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n」がとれねぇを解決したい。
やったこと
ssl関係まとめ
いっしーが情報収集してくれたもの
- Apache/SSL自己証明書の作成とmod sslの設定
- OpenSSLをSSL/TLSクライアントとして使ってみる
- SSL通信の手順
- OpenSSLで安全なネットワークプログラム
- Starting to use OpenSSL
- SSLかんたんな例
僕が収集したもの
「PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n」がとれねぇの解決
自分も悩み、いっしーも巻き込んで云々言わせたが、以前見た資料のp.7, 8に助けられた。
とりあえず、firefox側のabout:configのnetwork.http.spdy.enforce-tls-profileをfalseにすることでPRIがとれたー!!
network.http.spdy.enforce-tls-profileをfalseにしないでPRIをとるには?
cipher suiteを指定する必要があると思うのだけれど方法が分からん。ぐぐる。
Parameters for using ECDHE and ECDSA
SSL_CTX_set_ecdh_auto
を使うのかい?もうちょっと調べるとopenssl 1.0.2のCHANGESに
*) Support for automatic EC temporary key parameter selection. If enabled$ the most preferred EC parameters are automatically used instead of$ hardcoded fixed parameters. Now a server just has to call:$ SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically$
support ECDH and use the most appropriate parameters.$
とある。使ってみたらいけたー!
150316
frameの勉強
- 9byte(72bit)のheader
- 24bitのpayloadの長さ
- 8bitのflame type
- 8bitのframe type固有のflags
- 1bitのreserved bit
- 31bitのstream identifier
- それにつづくpayload
- payloadのstructとcontentはframe typeに依存する
frame type
- Data frames (type=0x0)
- The HEADERS frame (type=0x1)
- The PRIORITY frame (type=0x2)
- The RST_STREAM frame (type=0x3)
- The SETTINGS frame (type=0x4)
- The PUSH_PROMISE frame (type=0x5)
- The PING frame (type=0x6)
- The GOAWAY frame (type=0x7)
- The WINDOW_UPDATE frame (type=0x8)
- The CONTINUATION frame (type=0x9)
実装の戦略
- frame formatは同じなので、同じstructに突っ込もう。 -- frame formatのstructはbit fieldで構成する。
- frameへの応答は同一関数内でframe typeで応答を分けられるようにしよう。
- HPACKどうする?
HPACKの勉強
マッチョすぎる。僕は借りてこよう(とこのときは思ってた)。nghttp2にHPACKのpublic APIがある。