物好き者

物好き者が行ったことを載せています。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

Androidでクライアント証明書が必要なサイトへのアクセス

ソフトバンクモバイルのDell Streakを利用していますが、クライアント証明書が必要なサイトへのアクセスを行う必要が出ました。

Internetで調べると利用できないという情報ばかりでしたが、二つの対応方法が見つかりました。

一つ目は、クライアント証明に対応しているブラウザを利用する方法です。
企業でのAndroid活用に。SSLクライアント認証をサポートしたWebブラウザ「Sandrob」 - MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ

Sandrobというブラウザを利用することで、クライアント証明書が利用できるそうです。ただし、証明書をインポートすることはできず、SDカードからメモリ上に読み込ませることで利用するそうです。また、証明書を読み込むときには、毎回パスワードの入力が必要となるそうです。

マーケットからダウンロードして、クライアント証明書が必要なサイトにアクセスしたのですが、証明書は問題なく利用できるのですが、サイト内での動作がうまくいかず利用できませんでした。

もうひとつの方法は、Firefoxの証明書ファイルに対して、ツールを使って証明書をインポートする方法です。
how to use clientcertificate to access https websites under android | Firefox Support Forum | Firefox ヘルプ

PCでもMozilla系を使っているためFirefoxをメインブラウザにしていたので、これで利用できれば一番便利です。
ただし、この方法ではファイルのコピーとパーミッションの変更などのためにrootが必要と書かれていたので、root化していないため利用できないと思いました。

ただし内容をよく確認すると、証明書関係のファイルに対してPCで実行したツールから書き込めればいいので、FirefoxのデータをSDカードに移動してPCからアクセスできればいいのではと考えました。

アプリケーションの管理でFirefoxのデータをSDカードに移動させたところ、PCから証明書関係のファイルが確認できました。
このため、証明書処理ツールをダウンロードして解凍を行い、書かれているコマンドで証明書をインポートしました。
書き込む先はSDカード上のファイルを直接指定しましたが、問題なく証明書のインポートが完了しました。
解凍ディレクトリ\pk12util.exe -i p12証明書ファイル -d sql:書き込み先ディレクトリ

Firefoxを起動してサイトにアクセスしたところ、証明書の選択画面が表示されるので証明書を選択したところ、問題なく利用できました。
これでクライアント証明書が必要なサイトを利用できる環境が整いました。

スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

Stone for Android というAndroidアプリを使う方法もあります。

hayakawa | URL | 2011年08月10日(Wed)13:23 [EDIT]


Re:hayakawaさん

コメントありがとうございます。

Stoneも考えたのですが、別に動かす必要があるためあきらめました。
Androidアプリが出たのですね。これであればどのブラウザでも使えるので便利ですね。

| URL | 2011年08月10日(Wed)15:35 [EDIT]


Firefox mobile ver.9 で試してみたところ、証明書のインポートはうまくいったのですが(証明書選択画面に正しく表示されます)アクセスには失敗してしまいました。成功したfirefoxのバージョンを教えていただけないでしょうか。よろしくお願いいたします。

gawa | URL | 2012年01月25日(Wed)16:06 [EDIT]


Re:gawa さん

コメントありがとうございます。
どのバージョンで行ったかは覚えていないのですが、
http://ja.wikipedia.org/wiki/Firefox_for_Mobile のリリーススケジュールからすると、Ver4で行っていると思います。

その後随時バージョンアップしていますが、どのバージョンでも利用できており、Ver9でも問題ありません。

| URL | 2012年01月25日(Wed)18:53 [EDIT]


さっそくご返信いただきありがとうございます。そうですか、ver.4~9で問題ないとなると別のところでつまづいているようですね。

pk12utilで3つのクライアント証明書をインポートし、それぞれの証明書要求サイトにアクセスすると正しい内容の証明書が表示されるのですが、いざ接続を試みると「安全な接続ができませんでした」SSL peer was unable to negotiate an acceptable set of security parameters. (エラーコード: ssl_error_handshake_failure_alert) というエラーが発生してしまいます。

3つともPCのFirefoxでアクセスすると問題なしです。試した端末はHTC Desire(2.3)とArrowsタブ(3.2) です。どちらも同じエラーメッセージが出ます。機種なのか、OSのバージョンなのか、手順の不備なのか、失敗する原因がわからず困っています。うまくいかなかった機種、OS等はございますか?何か、リンク先の手順に書かれていない重要な設定があるのだろうかとabout:configの設定等、いろいろ試してみたのですが、いまのところ解決できていません。

key4.dbとcert9.dbのパーミッションとオーナーをインポート前と同様に変更しても効果はありませんでした。

何はともあれ、ver.4以降のFennecで間違いなく接続できているという貴重な情報を頂き、ありがとうございます。

gawa | URL | 2012年01月26日(Thu)15:59 [EDIT]


Re:gawa さん

利用しているのは、Dell Streak 2.2.1です。

Firefoxの設定変更は行っておらず、アドオンはPhoney2.0.2とQuitFennec2.1.3だけインストールしています。

インポート後に、cert9.dbとkey4.dbのパーミッション変更は行っていません。

クライアント証明書は、証明機関の正式なもので無く、サーバー自体で発行したものです。

手順としては、Firefoxを完全に終了、SDカードに移動、PCから証明書書き込み、利用可能を確認、本体に移動、利用可能を確認、です。

| URL | 2012年01月26日(Thu)16:16 [EDIT]


どうやらOSのバージョンが重要な要素なのかもしれません。Galaxy Tab(2.2)で試したところ、今までの苦労が嘘のようにあっさりと接続できました。2.3以降で成功した例があるのかどうかが気になるところです。

いやー原因の1要素が絞りこめました。本当にありがとうございます!!

gawa | URL | 2012年01月26日(Thu)18:11 [EDIT]


Re:gawa さん

Android2.2では利用できる、Android2.3と3.2は利用できない、ということからすると、Firefoxの処理だけではなくAndroidでの処理が関係しているのでしょうか。

単純に考えればブラウザのみの処理ですが、PCの場合と違いツールで証明書を組み込んでいることも関係するのかもしれません。

Streakでは2.3へのアップデートがないようですが、アップデートする場合は気をつけることにします。

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

| URL | 2012年01月26日(Thu)20:09 [EDIT]


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。