0

ここで説明されているように、PKI を使用して HTTPS 経由でデータを送信するプロセス全体を実装する必要がありますhttp://upload.wikimedia.org/wikipedia/commons/9/96/Usage-of-Digital-Certificate.svg

秘密鍵を使用してリクエストに署名する方法 (本当に行う必要がありますか?) と、証明書 (Web サービスから受け取ったもの) を追加する方法を教えてください。

私は自分のキーストア ( http://nelenkov.blogspot.com/2011/12/using-custom-certificate-trust-store-on.html (本当に素晴らしいブログです!)) を作成するために使用される Web サービス RootCA と秘密鍵を持っていますCSR ファイル、および Web サービスによって署名された証明書 (csr を使用)。

私は robospice + square retrofit + square okHttp (または、別の HTTP クライアントを使用しますか?) を使用してリクエストを実行し、独自のものを持っていますSSLSocketFactory:

OkHttpClient client = new OkHttpClient();  
KeyStore keyStore = App.getInstance().getKeyStoreUtil().getKeyStore();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, AppConfig.KEYSTORE_PASSWORD);
SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
client.setSslSocketFactory(sslCtx.getSocketFactory());

webservice はまだ実装されていないため、うまくいくかどうかわかりません。誰かが私が正しい方向に進んでいるかどうかを教えていただければ幸いです。

4

1 に答える 1

0

上記のコードは機能していますが、App のようなクラスを取得することApp.getInstance.getKeyStoreUtil()は、実際にはクリーンなソリューションではないことに注意してください。

于 2015-12-14T12:35:56.307 に答える