macのchromeで自己署名SSL

2016-12-26


私事ですが、先日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は繋がるので混乱してしまいました、、、