スマートじゃないSSL対応
先日LINE BOTのトライアル版が解禁されたので、早速申し込んでトライアルのアカウントを取得しました。 BOTの返事などに使うCallback URLがセキュアな通信しか受け付けないようなので、nginxでhttps通信、SSLの設定をしているのですが、苦戦しています。
現在の状況としては、静的なファイルであればhttps通信できるところまでは設定しました。 ネットで検索するともう実装している方も多くすごいなーと思うばかりですが、なかなか失敗した例はないので、何でつまづいたか書いてみたいと思います。 ※LINE BOTの実装の話ではなく、それ以前のnginxのSSL通信の話です。
つまづきポイント1 nginxのSSL通信が「TLS SNI support enabled」になってくれない。 A:nginxのリポジトリの入手先がcentos5から持ってきていた。
nginxのSSL通信の設定自体は検索すればすぐ出てきます。 ですがいくらその設定を書いても「tls sni support disabled」の表示が変わりません。 散々悩んだ後にnginxのリポジトリの設定を見ると、入手先がcentos5になっていたので、6に変更しました。
baseurl=http://nginx.org/packages/centos/5/$basearch/ #5だとSSL通信に対応していない? ↓ baseurl=http://nginx.org/packages/centos/6/$basearch/
コピペで済ました報いですね。
つまづきポイント2 iptablesの更新 A:iptablesを更新したつもりだったけど、更新されていなかった。 つまづきポイント1でかなり時間を使ってしまいましたが、ようやくhttpsでも繋がると思い、画面をリロードしましたが、まだ繋がらない。 オレオレ証明書でしたが、証明書自体は問題なさそうなので、何が悪いのか検討もつきませんでしたが、半ばヤケクソでiptablesの設定を見ると443ポートが通っていませんでした。 更新したと思っていましたが、おそらく書き足して保存せずに再起動させたみたいです・・・。
これからつまづくポイント ・動的ファイル(.php)がhttps経由だと「File not found.」になる →これは数時間で解決できそう
・オレオレ証明書だとLINE BOTと通信できない? →ネットの情報だと、無料の証明書だと通信できないようです。 無料の証明書よりも信頼がないオレオレでいけるのだろうか・・・。
追記 このブログ自体もhttpsにしようと思い、nginxの設定を変えてみましたが、画像関係が表示されませんでした。