ガラケー×ssl 開発tips

48
SSL Tips 開発Tips 2011/10/27 高倉利明 2011/10/27 高倉利明

Upload: trinityt-

Post on 15-Jun-2015

12.713 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: ガラケー×SSL 開発Tips

ガラケー×SSLTips開発Tips

2011/10/27 高倉利明2011/10/27 高倉利明

Page 2: ガラケー×SSL 開発Tips

今日の内容

いまさらガラケー?

→現実的に案件はまだまだあるよね。

Page 3: ガラケー×SSL 開発Tips

今日の内容

なぜSSLに特化した話?SSL

→PCサイト構築中心にやってた人は甘く見がちだが、特にはまりやすいのがSSL関連。のがSSL関連。

Page 4: ガラケー×SSL 開発Tips

今日の内容

目次

•テストサイトでも証明書買え!•リダイレクトとSSL• SSL下でのセッション維持• SSL下でのセッション維持

Page 5: ガラケー×SSL 開発Tips

その1

テストサイトでもテストサイトでも証明書買え!

Page 6: ガラケー×SSL 開発Tips

PCの場合PC→自己認証証明書でとりあえず確認できる。

Page 7: ガラケー×SSL 開発Tips

ガラケー実機の場合

\(^o^)/

Page 8: ガラケー×SSL 開発Tips

自己認証証明書では自己認証証明書ではガラケー実機でSSLの確認できない!

Page 9: ガラケー×SSL 開発Tips

•ガラケーサイトでは必ず認証局認証済みの証明書を準備する必要がある

まとめ:テストサイトでも証明書買え!

証明書を準備する必要がある※特にauは勝手証明書アクセス全滅

•どこの証明書買えばいいの?→迷ったらVeriSign

Page 10: ガラケー×SSL 開発Tips

その2

リダイレクトとSSLリダイレクトとSSL

Page 11: ガラケー×SSL 開発Tips

・リダイレクト回数・リダイレクト回数

・au×SSLリダイレクト時のLocation指定のLocation指定

Page 12: ガラケー×SSL 開発Tips

リダイレクト回数

キャリア(&機種)毎にリダイレキャリア(&機種)毎にリダイレクト可能な回数がある

※エミュレータでは起きないの※エミュレータでは起きないので気づきにくい。

Page 13: ガラケー×SSL 開発Tips

一般的にはDoCoMo: 最大4回(超えた場合は「無効なデータを受信しました」)(超えた場合は「無効なデータを受信しました」)

Softbank: 最大4回(超えた場合は「このページは表示できません」)

au: 最大6回(超えた場合は「このページへのアクセスは拒否されました」)(超えた場合は「このページへのアクセスは拒否されました」)

※非公式調査なので注意

Page 14: ガラケー×SSL 開発Tips

で、リダイレクト回数がSSLと関係あるの?SSLと関係あるの?

→大あり

Page 15: ガラケー×SSL 開発Tips

SSLなしの場合%http://hoge.jp→ http://hoge.jp/→ http://hoge.jp/→ http://hoge.jp/m/→ http://hoge.jp/m/mypage

リダイレクト3回→セーフリダイレクト3回→セーフ

Page 16: ガラケー×SSL 開発Tips

SSLだと%https://hoge.jp→ https://hoge.jp/→ https://hoge.jp/→ http://hoge.jp/→ http://hoge.jp/m/→ http://hoge.jp/m/mypage→ https://hoge.jp/m/mypage→ https://hoge.jp/m/mypage

リダイレクト5回→アウト

Page 17: ガラケー×SSL 開発Tips

au×SSLリダイレクト時のLocation指定

au × SSL環境下の場合、リダイレクトのau × SSL環境下の場合、リダイレクトのLocationに相対パスで指定する必要がある。

※これもエミュレータでは起きないので気※これもエミュレータでは起きないので気づきにくい。

Page 18: ガラケー×SSL 開発Tips

例:PHPの場合

https://www.sample.com/aaa/で~

<?phpheader(locaiont”https://www.sample.com/aaa/bbb.php”);?>

→502エラー

<?phpheader(location:”bbb.php”);?>

→正常にリダイレクト

Page 19: ガラケー×SSL 開発Tips

•キャリア毎にリダイレクト回数制限がある&SSLかけるとリダイレクト回数増加

まとめ:リダイレクトとSSL

•au × SSLの場合、リダイレクトのLocationに相対パスで指定する必要あり。

•エミュレータでは起きないのでテストフェーズ•エミュレータでは起きないのでテストフェーズまで気づかないことが多い→回避するには大幅なプログラム修正要→開発の早い段階で実機確認を行うべし。

Page 20: ガラケー×SSL 開発Tips

その3

SSL下でのSSL下での

セッション維持

Page 21: ガラケー×SSL 開発Tips

前提PCでのセッション維持→Cookie一択→Cookie一択

Page 22: ガラケー×SSL 開発Tips

前提ガラケーでのセッション維持→いろいろ→いろいろ(1)セッションID(2)UID(3)Cookie(3)Cookie

Page 23: ガラケー×SSL 開発Tips

(1)セッションID古くからある方法。リンクパラメータでIDを引き回す。リンクパラメータでIDを引き回す。http://hoge.jp/?sid=0011AABBCC....

問題点リンクが分かればセッション乗っ取れる。→「認証前にセッションを有効にしない」、→「認証前にセッションを有効にしない」、「Refererでの漏洩を防ぐ」「セッションIDの一定期間での振り替え」などを考慮。

Page 24: ガラケー×SSL 開発Tips

(2)UID (個体識別情報)キャリア毎に用意されている回線契約や端末に紐づくID。これを使用してセッショ端末に紐づくID。これを使用してセッション維持する。

注. 今回は説明割愛します。※UIDに種類がいろいろあり説明が複雑にな※UIDに種類がいろいろあり説明が複雑になるのと、セキュリティ的に今後非推奨になっていくと思われるので。

Page 25: ガラケー×SSL 開発Tips

(3)CookiePCと同じように使う。Web標準。

問題点以下の理由によりガラケーでは最近まであまり使われていなかった。

•DoCoMoのiモードブラウザ1.0では使えな•DoCoMoのiモードブラウザ1.0では使えない!※2009/6 以前発売端末•SSL絡みの挙動※後述

Page 26: ガラケー×SSL 開発Tips

ということで・・・•Cookie使える端末

→Cookie→Cookie•Cookie使えない端末

→セッションID

T木先生もT丸先生も推薦。T木先生もT丸先生も推薦。セキュリティもばっちり! b(^-^)o

Page 27: ガラケー×SSL 開発Tips

よし、SSLでよし、SSLでテスト!

Page 28: ガラケー×SSL 開発Tips

( ゚д゚)( ゚д゚)au端末でセッション切れる・・・ン切れる・・・

Page 29: ガラケー×SSL 開発Tips

HTTPで発行したCookieのHTTPSとの共有

・DoCoMo できる・DoCoMo できる・Softbank できる・au できない・au できない

※注.2011/10末現在

Page 30: ガラケー×SSL 開発Tips

DoCoMoの場合。。。

HTTPで発行したCookieのHTTPS間HTTP Cookie HTTPSとの共有ができる。

→しかしiモードブラウザ1.0端末ではCookie使えない。。。ではCookie使えない。。。

Page 31: ガラケー×SSL 開発Tips

Softbankの場合。。。

HTTPで発行したCookieのHTTPS間HTTP Cookie HTTPSとの共有ができる。

※余談:旧仕様 2011/6/30で廃止・HTTP接続:http://hoge.jp/http://hoge.jp/・ HTTPS接続:https://secure.softbank.ne.jp/hoge.jp/

→ドメインが違うので、Cookieを引き継げない。

Page 32: ガラケー×SSL 開発Tips

auの場合。。。

HTTPで発行したCookieのHTTPS間との共有はできない。有はできない。→理由・HTTPS接続:端末にCookie保存・HTTP接続:GWサーバにCookie保存

→普通に実装すると、 HTTP⇔HTTPSの遷移でCookieが変わる(=セッションが引き継がれない)

Page 33: ガラケー×SSL 開発Tips

auの場合。。。

設定時の条件設定時の条件設定時の条件設定時の条件 HTTPHTTPHTTPHTTPでのでのでのでの参照参照参照参照 HTTPSHTTPSHTTPSHTTPSでのでのでのでの参照参照参照参照

HTTPで設定 ○ × (本来○であるべき)

→このためセッション維持のためHTTPとHTTPS両方か

HTTPSで設定(セキュア属性なし)

○ ○

HTTPSで設定(セキュア属性付き)

× ○

→このためセッション維持のためHTTPとHTTPS両方から参照できるCookieを設定するためには、HTTPS側でCookieを設定する必要がある。=プログラム側で大幅な改造が必要。

Page 34: ガラケー×SSL 開発Tips

余談:2011年秋冬モデル以降は、この縛りはなくなるものと思われる。

au/KDDIの「KDDI au: そのほかの技術情報 > Cookie」au/KDDIの「KDDI au: そのほかの技術情報 > Cookie」→Cookieはブラウザ側に全て保存される予定。

Page 35: ガラケー×SSL 開発Tips

上記により以下のケースでセッション維持方針がかわってくる。

(1)サイト全てをHTTPSページとする場合※問題点あり(2)サイトでHTTP、 HTTPSページを使い分ける場合使い分ける場合

※(1)の問題点画面遷移やリダイレクト毎にいちいち「SSLで接続します」等のダイアログが出てしまうので、UI的に非常にイケていない。

Page 36: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

(1)サイト全てをHTTPSページとする場合場合

•Cookie使える端末の場合→Cookie

•Cookie使えない端末の場合•Cookie使えない端末の場合→セッションID(等)

Page 37: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

(2)サイトでHTTP、 HTTPSページを使い分ける場合使い分ける場合

(i) au以外•Cookie使える端末の場合

→Cookie→Cookie•Cookie使えない端末の場合

→セッションID(等)

Page 38: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

(2)サイトでHTTP、 HTTPSページを使い分ける場合使い分ける場合

(ii) auセッションID(等)を使用 orセッション維持用のCookieはHTTPSでセット・セッション維持用のCookieはHTTPSでセット・変更する

Page 39: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

補足:Cookie使えない場合に「セッションIDCookie使えない場合に「セッションID(等)」としたのは、実案件ではUIDを併用したセッション維持を行わざるを得ないケースも多いため。

※かんたんログイン%etc

Page 40: ガラケー×SSL 開発Tips

おさらいおさらい

Page 41: ガラケー×SSL 開発Tips

•ガラケーサイトでは必ず認証局認証済みの証明書を準備する必要がある

まとめ:テストサイトでも証明書買え!

証明書を準備する必要がある※特にauは勝手証明書アクセス全滅

•どこの証明書買えばいいの?•→迷ったらVerisign

Page 42: ガラケー×SSL 開発Tips

•キャリア毎にリダイレクト回数制限がある&SSLかけるとリダイレクト回数増加

まとめ:リダイレクトとSSL

•au × SSLの場合、リダイレクトのLocationに相対パスで指定する必要あり。

•エミュレータでは起きないのでテストフェーズ•エミュレータでは起きないのでテストフェーズまで気づかないことが多い→回避するには大幅なプログラム修正要→開発の早い段階で実機確認を行うべし。

Page 43: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

(1)サイト全てをHTTPSページとする場合場合

•Cookie使える端末の場合→Cookie

•Cookie使えない端末の場合•Cookie使えない端末の場合→セッションID(等)

Page 44: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

(2)サイトでHTTP、 HTTPSページを使い分ける場合使い分ける場合

(i) au以外•Cookie使える端末の場合

→Cookie→Cookie•Cookie使えない端末の場合

→セッションID(等)

Page 45: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

(2)サイトでHTTP、 HTTPSページを使い分ける場合使い分ける場合

(ii) auセッションID(等)を使用 orセッション維持用のCookieはHTTPSでセット・セッション維持用のCookieはHTTPSでセット・変更する

Page 46: ガラケー×SSL 開発Tips

まとめ:SSL下でのセッション維持

補足:Cookie使えない場合に「セッションIDCookie使えない場合に「セッションID(等)」としたのは、実案件ではUIDを併用したセッション維持を行わざるを得ないケースも多いため。

※かんたんログイン%etc

Page 47: ガラケー×SSL 開発Tips

質疑応答質疑応答

Page 48: ガラケー×SSL 開発Tips

ご静聴ご静聴ありがとうございました。ございました。