最近のWebサービスではSSLを常用するようになっています。しかしそんな中、意外と厄介なのが画像などの外部リソースです。HTTPSに入っていない外部リソースを参照しようとすると全てがSSLでないといった注意が出てしまいます。 そこで使ってみたいのがCamoです。GitHubでも使われている小さな画像プロキシになります。

Camoのデモ

例えばこれはCamoのREADMEです。FlickrのアドレスでHTTPで記述されています。

実際に画像を表示した場合のURL。HTTPSになっています。

これはCamoがSSLになっており、プロキシとしてFlickrの画像を取得している形になります。Camoは5MBまでの画像を取得可能で、Googleチャートをサポート、リダイレクトした画像も取得できます。

URLのフォーマットは次のようになります。

http://example.org/<digest>?url=<image -url>
http://example.org/<digest>/<image -url>

digestはimage-urlをシークレットキーとともにHMACでダイジェスト化した文字列が入るようになっています。あえて本体のWebサーバで取得するのではなく、Camoを使って疎結合にするのはセキュリティ上から見ても良さそうですね。

Camoはnode/JavaScript製、MIT Licenseのオープンソース・ソフトウェアです。

atmos/camo