uzullaがブログ

uzullaがブログです。

無料でSSL使える時代きてた!CloudFlare最高!!!(?)

しょうもない日記

YAPC行脚、福岡編 - uzullaがブログ

とかかいた後になんとなくツイッターをみていたら、あるツイートをみまして。

それでCloudFlare(http://cloudflare.com/)がタダでSSL証明書を用意してくれるようになっていたのを知りました。

Cloudflare Free SSL/TLS | Get SSL Certificates | Cloudflare

タダ!なんと甘美な響き!

オチ

SNIでかまわないなら、CloudFlareをつかえばValidなSSLがタダで利用できる。

SNIとは?

NameBaseのVirtualHostをSSL通信でも可能にするものです。HTTPSは旧来ドメイン毎にIPがかならず一つ必要でしたが、その制限を回避するためのものですね。

これが一般的につかわれていないのは、クライアント側の対応が微妙だからです。とはいえ、今ならごく一部の端末を除けば無視してもよいケースは多いのではないでしょうか。

具体的には、Windows XPと、Android 2.x系の通信ができない事が問題でしょう。

あるいは、curlwgetなどのブラウザ以外のhttpクライアントも結構微妙な所があります。(curlwgetのバージョンが問題というより、OpenSSLのバージョンが問題になる)

仕事だとここらへんクリティカルなんですが、まあ趣味の用途ならある程度目をつぶる事もできるかもしれません。

サンプルというわけではないですが、以下のサイトがCloudFlare+オレオレSSLのサイトです。

https://pan.hachiojipm.org/

(SNI対応しているブラウザなら、「hachioji.pm orepan」などと書いてあるはずです)

どうしてタダなんだ?

CloudFlareが証明書をタダで(勝手に)切ってくれているわけですが、SSL証明書なんて発行局の胸先三寸で価格はきまるでしょうから、IPを複数つかわないSNIなら安く(というかタダで)提供できる、ということなんでしょう。

エッ…これいいの?

まあ、「俺のドメインSSL証明書を勝手に発行してる!?!?」と思うかもしれませんね。

以下の通り証明書結構スゴイ事になってます。

f:id:uzulla:20150225032619p:plain

f:id:uzulla:20150225032705p:plain

……

http://pyazo.hachiojipm.org/image/znoSSLoy4XzDiuDz142480274912032.jpeg

異常な証明書だ…。

……ま、まあ…ね?タダでつかえるんだし。*1

個人的にアツイと思う所

気をとりなおして、CFはSSLのサポートで複数のモードを用意しています。

  • Flexible SSL (つまりはSSLターミネーター。CFまではHTTPSで、CFから自分のサーバまではHTTP)
  • Full SSL (CFと自サーバまでもSSL、ただし証明書の検証しない)
  • Full SSL (strict)(CFと自サーバまでもSSL、証明書の検証もする)

このFull SSLをつかうことで、オレオレ証明書しかもっていなくても、ユーザーまで一気通貫に経路上のSSL通信を行う事ができるわけです!!

…といっても、CloudFlareの時点では復号化されているので、エラーがでない!というだけですので、ここは注意すべきでしょう。あなたが(CloudFlareを信用してはいけない程度に)本当にセキュアというものを求めているなら、そもそもCFをつかうべきかは考えましょう。

勿論、CF側がダマされて偽サイトをOriginとして扱う可能性もゼロではありませんのでStrictモードは重要でしょう(まあ、結構難しいとおもいますけど)。

オレオレ証明書ロンダリング

繰り返しになりますが、自分のサーバーにいれる証明書がオレオレでもCloudFlareをとおせば有効なSSL証明書のフリができるのです!(というか、Flexible SSLつかえば、HTTPSである必要すらないんですけど)

…どこで使いたいのかわからない…

最近はブラウザのsandboxなどの制限で、httpとhttpsを混在させたコンテンツが厳しい時代です。こういうときにhttpsが「セキュアさとかいらないけど、しかたなく必要」というケースもあります。

そういうのがCFでタダで回避できるというのは、私みたいなセコい事が好きな人には大変たすかりますね!!!

ただし、他にもあるかもしれない落とし穴

落とし穴というかなんというか、CFはCDNサービスなので、流れるコンテンツをキャッシュします。静的ファイル配信ならいいですが、動的サイトの運営には、CF(というよりCDN)特有の癖(9割はキャッシュしてほしくない所をキャッシュしてしまう事)があり、それを回避するためにCFに適切な設定が必要になりますね。

あと、CFのタダのプランでは、サーバ間の通信エラー時に表示されるエラー等がCFのものになるのも問題でしょうか。まあこれも気にならないケースは多いでしょう。

まとめ

ちょっと前まで、CFって共有SSL証明書以外は結構高いお金が必要だったんですけど、SNIに目をつぶれればこのあたりタダですもんねえ、すごいなあ。

ちなみに、私は仕事でCloudFlareのBusinnessプランもつかってます。

「ブラジルの人きこえますか〜?」ブラジルのユーザーにそれなりの体験を提供する話 - uzullaがブログ

CDNとしてつかっても(?)CloudFlareは(楽ちんなかわりに癖は色々あるけど…)いいですねー。

CloudFlareをつかえばDNSもタダで運用できるし、とにかくCloudFlare最高ですね!!とりあえず前段にいれておくのもいいんじゃないですか!?

ただ…あの証明書すごいなあ…COMODO…

*1:さすがCOMODO…って感じはあるし、俺は自分のドメインの証明書を発行していい、みたいな許諾をしてないよなあ…??(その頃はこんな機能なかったと思うし)