0

自己署名証明書を使用してテストクライアントへのhttps接続を提供するサーバーがあります。

私のクライアントアプリはJavaで書かれており、次のように自己署名証明書を受け入れさせていました。

import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;

SSLSocketFactory factory = new SSLSocketFactory(myTrustedStore);

DefaultHttpClient client = new DefaultHttpClient();
client.getConnectionManager().getSchemeRegistry()
    .register(new Scheme("https", factory, 456));

これで、信頼できるサードパーティプロバイダーからの適切なSSL証明書が得られました。

証明書を交換した場合、上記の接続は失敗しますか?上記のSSLSocketFactoryで明示的に初期化しているので、クライアントはサーバー証明書を拒否しますか(これは本当に信頼できる証明書ですか?)。

上記のコードを変更してテスターに​​クライアントアプリを更新させる必要があるのか​​、それとも接続は更新せずに透過的に機能するのでしょうか。

ありがとう

- - - ファローアップ - - -

私は「本物の」証明書で試しました。自己署名証明書を使用しなければならなかったコードは機能しませんでした。そのため、クライアントが実際の証明書を使用する前に、上記のコードをクライアントにドロップする必要がありました。

4

2 に答える 2

0

クライアントが自己署名証明書を受け入れた場合、適切に有効な信頼できる証明書を使用しても問題はありません。

問題がある場合でも、新しい証明書をtrustedStoreに手動でインポートできます。あなたのコードは影響を受けてはいけません。

于 2013-02-22T15:25:01.987 に答える
0

これで適切な証明書が得られたので、多くのコードを削除できると思います。実際、DefaultHttpClientが機能するはずです。

import org.apache.http.impl.client.DefaultHttpClient;

DefaultHttpClient client = new DefaultHttpClient();

サードパーティが信頼できるキーストアになるため、信頼できるキーストアは不要になります。DefaultHttpClientはこれを自動的に行う必要があります。

于 2013-02-22T15:26:05.477 に答える