herokuでSSLを使う場合、以下の4つのプランがあります。

  1. Piggyback SSL (無料)
  2. SNI SSL ($5/月)
  3. Hostname Based SSL ($20/月)
  4. IP Based Custom SSL ($100/月)

herokuで動かすアプリケーションが、heroku.comドメインで良い場合はPiggyback SSLを使うことができますが、独自ドメインでSSLを使う場合、他のプランを選択する必要があります。今回は最も安価なSNI SSLについて調べてみました。

そもそも、SNIとは何か?ですが、http://www.ssl-secure.jp/faq.html#about_sniによると、

SNI拡張は、「名前ベースのバーチャルホスト」で複数のSSL環境を利用出来るようにする技術です。

従来、バーチャルホスト環境でSSLを利用するには「IPベースのバーチャルホスト」でなければなりませんでした。そのため、SSLを利用したいバーチャルホスト毎に独立したIPアドレスを割り当てる必要がありました。

SNI拡張では、1個のIPアドレスを複数のSSLサイトで共有できます。このためIPアドレスの節約やコスト削減につながります。

とのことです。つまり、独立したIPアドレスでなくてもSSLを利用できるということですね。

ただし、SNIを利用するためには、サーバとクライアントの双方で対応している必要があるとのこと。サーバに関しては、heroku側で対応しているので、問題はクライアントですね。

Server Name Indicationによると、サポートしているブラウザは以下の通り。

  • Internet Explorer 7以上(Windowsの場合にはVista以上。Windows XPでは未サポート)
  • Mozilla Firefox 2.0以上
  • Opera 8.0以上 (TLS 1.1を有効にする必要あり)
  • Opera Mobile 10.1 beta以上(Android)
  • Google Chrome (Windowsの場合にはVista以上。Windows XPの場合にはChrome 6以上、Macの場合にはOS X 10.5.7以上でChrome 5.0.342.1 以上)
  • Safari 2.1以上(Macの場合はOS X 10.5.6以上、Windowsの場合はVista以上)
  • Konqueror/KDE 4.7以上
  • MobileSafari (iOS 4.0以上)
  • Androiddefuxデフォルトブラウザ(Honeycomb以上)
  • Windows Phone 7(citation必要)
  • MicroB(Maemo)

ということで、開発中のサービス的には問題なさそう。とりあえず試してみて、何かあればまた書きます。