2011-06-20 12 views
2

URL.openStreamを使用するAndroid上にいくつかのコードがあります。内部テスト目的のために、私はそれをプライベートCAを使用するサーバーに指摘できる必要があります。私たちはすでにCAバンドルをPEM形式(NDKのlibcurlも使用しています)で使用しており、PEMファイルをURL.openStreamが使用するKeyStore(または同様のもの)に直接読み込むことができるようにしたいと考えています。 URL.openStreamで使用される証明書を追加する

だから、この質問には、マルチパートの事である:

  1. どのようにURL.openStreamが使用するキーストレージを得るのですか?または、私はちょうどHttpClientを直接使用する必要がありますか?
  2. 上記のキーストレージにPEM証明書を追加するにはどうすればよいですか? (HttpClientを使用している場合でも)

ありがとうございます。

答えて

1

特にAndroidでは話せませんが、少なくとも標準のデスクトップJavaには、/ lib/security/cacertsにあるJVMのすべてのインスタンスで使用されるデフォルトのキーストアがあります。

多くの場合、このファイルは、JVMのすべてのインスタンスでグローバルに変更するのではなく、すでに省略している場合に応じて変更する必要があります。これを行うには、.openStreamに直接電話をすることはできません。代わりにURLConnection.openConnection()を呼び出すことによってHttpsURLConnnectionを取得します(キャストしてHttpsURLConnectionを実行します)。この接続で他の操作を実行する前に、HttpsURLConnectionを呼び出してカスタムSSLSocketFactoryを設定してください。 setSSLSocketFactory。ここから、カスタムSSLContextとTrustManagersで作業する必要があります。

これ以上の詳細については、既にHow can I use different certificates on specific connections?で回答しています。

HttpClientを使用する場合は、http://hc.apache.org/httpclient-3.x/sslguide.htmlとに追加の参照があります。

関連する問題