1

Androidのhttpsを介してOCSサーバーに安全に接続しようとしています。

EasySSLFactoryクラスとEasyX509TrustManagerクラスを見つけて、Androidに証明書を信頼させましたが、EasySSLFactoryオブジェクトとEasyX509TrustManagerオブジェクトを1回だけ初期化する方法がわかりません。

証明書を受け入れて単一の接続を確立するための次のコードがあります。

    SchemeRegistry schemeRegistry = new SchemeRegistry();

    schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(),
            443));

    HttpParams params = new BasicHttpParams();
    params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 3);
    params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE,
            new ConnPerRouteBean(1));
    params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "utf8");

    int timeoutConnection = 1000;
    HttpConnectionParams.setConnectionTimeout(params, timeoutConnection);

    int timeoutSocket = 1000;
    HttpConnectionParams.setSoTimeout(params, timeoutSocket);

    clientConnectionManager = new ThreadSafeClientConnManager(params,
            schemeRegistry);

    HttpClient client = new DefaultHttpClient(clientConnectionManager,
            params);

新しいメソッドで新しい接続を確立するには、それらの行も作成する必要があります...それらをクラスコンストラクターに配置し、接続前に作成せずにそのクラスで接続を実行できる方法はありますか。 。

ありがとうございました

4

1 に答える 1

0

私のブログ記事を見てください。目的の証明書をカスタムキーストアに追加し、それを使用してHttpClientを初期化する方法の詳細な説明を投稿しました。

お役に立てれば

編集:私はそれを試したことがありませんが、おそらくTrustStrategyインターフェースが役立つかもしれません。

独自のTrustStrategyインターフェースを実装し、適切なコンストラクターを使用してSSLSocketFactoryを初期化できます。戦略は(isTrustedメソッドで)trueを返すことができますが、セキュリティ上の理由から、証明書が信頼できると見なされるかどうかを確認するために少しチェックする必要があります(ニーズによって異なります)。

SecureHttpClientクラスの私のブログ記事の35行目を見てください。行を次のように置き換えます。

SSLSocketFactory sf = new SSLSocketFactory(myTrustStrategy);

これでうまくいくかどうか教えてください。

よろしく

于 2011-01-20T12:44:50.740 に答える