2016-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2016-03-15 (火)

このサイトを http2 対応した [nginx]

今まで http だったこのサイトを http2 対応しました。

静的ファイルもそうですが、このサイトで動いている kibana が体感で速
くなった気がします(計測すればよかった)。

SSL 証明書は最近流行りの Let's Encrypt ではなくて、温かみのある
StartSSL で取得しました。パスワードではなく、証明書でのログインが
いいですね。

どちらも無料で取得できます。前者はコマンドラインから取得できるが構
成管理難しめ、後者はサイト上から手作業で取得が必要だが構成管理は容
易、というおおざっぱな違いがあります。


今回学んだことは「出来るだけ https 対応してから http2 対応すべし」
でした。雑に http2 にしたら 403 Forbidden や、Chrome で
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY が発生しハマりました。

あとは「早く寝ろ」でしょうか。日曜日の後半は完全に頭が働いていませ
んでした...。

nginx の設定では主に以下を学びました。

- ssl_session_cache
    - 高速化のため、セッションキャッシュを設定する
- ssl_ciphers
    - より安全にするため、暗号化スイートを明示的に設定する
- ssl_dhparam
    - より安全にするため、DH パラメータファイルを指定する
- add_header Strict-Transport-Security
    - より安全にするため、HSTS を用いて常に HTTPS 通信を行う
    - HTTP Strict Transport Security

以下、作業メモです。

2016-03-13(日)


1. 金曜日の社内勉強会で http2 の話を聞いたこともあり、16:00 頃突然
masutaka.net http2 化の意欲が湧いてきた。この時点ではすぐ出来るだ
ろと思っていた。

2. Chef での構成管理がしやすそうな StartSSL で Class 1 の証明書を
取得した。必要な CSR(Certificate Signing Request)はほぼ指示通り
の以下のコマンドで作成した。

$ openssl req -new -nodes -newkey rsa:2048 -keyout yourname.key -out yourname.csr


3. ドメイン認証のために whois に登録したメールアドレスを受取可能に
する必要があると気づき、masutaka.net に Postfix をインストールした。

4. 25 番ポートを開けないとメールが受け取れないことに気づき、開けた。

5. StartSSL から何度 Verification メールを送っても受信できず、
tail -f /var/log/mail.log をずっと眺めてた。

6. ふと、StartSSL にアクセスし直し再送したら、あっさり受信...。

7. この辺で迷走。SMTP relay をやりたくなり試行錯誤。結局諦めた。

8. 443 番ポートを開け、一気に http2 にするも 403 や Chrome だけで
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY が発生したりの大混乱。
Mozilla SSL Configuration Generator を参考にはしていた。

9. なんとか SSL 化は成功。Chrome からは『接続は古い暗号スイートに
より暗号化されています』と言われていたが、AM2:00 になってしまった
ので就寝。

2016-03-14(月)


1. 会社の同僚から http2 で Chrome に怒られるのは ssl_ciphers(長い
やつ)を設定してないからかもとのアドバイス。Qualys SSL Labs の SSL
Server Test
も教えてもらった。この時点でのスコアは B 。

2. 会社に置いていた『nginx実践入門』もゲットして帰宅

3. Mozilla SSL Configuration Generator の設定を『nginx実践入門』と
照らしあわせて、1つずつ設定。ssl_ciphers を設定したら B から A に
なり、ssl_dhparam を設定したら A が A+ になった。

ssl_dhparam ファイルは以下のコマンドで作成した。作成には数分かかった。

$ openssl dhparam 2048 -out dhparam.pem


masutaka.net の SSL 診断結果
https://www.ssllabs.com/ssltest/analyze.html?d=masutaka.net

4. https から http2 へは nginx の設定を以下に変更してあっさり終了。

listen 443 ssl;

listen 443 ssl http2;

※ nginx は Ubuntu の PPA で 1.9 系を使っていたため、
http_v2_module が含まれていた。

5. Chrome 先生からご指摘を受けているので、このブログで http のリソー
スを使っている箇所を出来るだけ https に変更。『このブログのはてな
ブックマーク数』と『Amazon の商品リンク』は出来ず。後日考えることに。


2016-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

最終更新時間: 2017-11-24 21:17

検索


最近の話題
- 2017-11-18
  iPhone X 64GB SIM フリー版を買って一週間経った
- 2017-11-16
  golang.tokyo #10 x WomenWhoGoTokyo に行ってきた #golangtokyo
- 2017-11-12
  『PromiseとAsync-Awaitまとめ(Emacsで)』という LT をした
- 2017-11-10
  RSpec 3.5 から shared_context の使い方が少し変わっていた
  S3 の public バケットで特定パス以下を IP アドレス制限する
- 2017-11-01
  『オブジェクト指向設計実践ガイド』読書会での感想メモ
- 2017-10-30
  『スターティングGo言語』を読んだ
- 2017-10-22
  github-nippou を golang で書き換えて v4.0.1 リリースしてました
最近追記された記事
- 2017-04-08-1 (12日前)
- 2017-06-02-1 (146日前)
- 2017-04-29-1 (208日前)
- 2017-04-13-1 (222日前)
- 2017-04-13-1 (224日前)
- 2017-03-02-1 (266日前)
- 2017-02-25-1 (271日前)
- 2017-02-21-1 (275日前)
- 2015-06-07-1 (281日前)
- 2016-10-19-1 (290日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (20)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (90)
- Boxen (2)
- Bugsnag (1)
- capistrano (4)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (10)
- clang (26)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (3)
- E-mail (8)
- elasticsearch (4)
- Emacs (222)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (20)
- GCP (1)
- Gem (5)
- Git (9)
- GitHub (19)
- golang (9)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (3)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (16)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Kubernetes (2)
- Langrich (7)
- LDAP (6)
- Life (19)
- Linux (6)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (2)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (12)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- RSpec (2)
- Ruby (50)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (16)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+