私事ですが、先日Macを買いました。話題のTouchbar付き。Touchbarはまだ使いこなせてないんですが、せっかくなら開発環境も新しいものを、ということで、Dockerを導入しました、今まではxampp。
なかなか新しい技術だったので難しかったですが、なんとかローカルにサーバ建てて繋がるようになりまして。それではもう少し難しい、自己署名のSSL通信なんぞやってみようと。これが大変だった・・・今回の本題です。
環境はmacOS Sierraとchromeの最新版、dockerにはcentos 5.6とapache 2.2。
SSL通信のモジュールを入れる事自体は簡単です。mod_sslとかyumするだけ。設定ファイルも生成されるので、あとはhttpdをリスタートでおしまい。
ただこのままだと、chromeでは「err_crt_authority_invalid」と出ます。
危険だけど繋ぎますとやれば一応は繋がるものの、リンククリックするたびにいちいち警告がでる、このサイトは危ない!と思われるからかCSSとかをダウンロードしなくなる。
となかなかやってられない。
chromeは自身では鍵の管理をせず、OSに任せる方針。macであればキーチェーンアクセスというアプリで設定できるらしい、けど、Safariからやったほうが楽。
Dockerのサーバを立ち上げてSafariでHTTPSでアクセスすると、この鍵はいまいち信用できない!とダイアログが。
そのダイアログで常に信頼をしてやれば無事OSに鍵が登録されます。
ここからが長かった。Safariはこれで無事繋がるんですが、chromeは相変わらず警告。。。登録の仕方が悪いのか、OSと連携できてないのか、あげくのはてにcanaryにまで手を出しました。
すたっもんだしていたら・・・警告の画面は今までと同じなんですが、よくよく見ると種類が微妙に違う。
err_crt_common_name_invalidになってる。これはもしかすると、mod_sslのデフォルトの鍵とURLがあっていない?
common nameを開発環境に合わせてopensslで鍵を作り直し、apacheに登録して再起動したら無事繋がりました。
chromeでSSL通信する時の肝は二つ。
- 鍵の管理はOSの機能で。
- common nameを合わせないと怒られる。
なまじっかSafariは繋がるので混乱してしまいました、、、