ボレー ネットワーク ライブラリで SSL ピニングを使用したいと考えています。ボレーでSSLピニングを実装する方法はありますか? Volley は、セキュリティの向上のためにこのサポートを提供しますか?
5 に答える
私が取り組んでいるプロジェクトについても同じことを調べました。しかし、私の立場はあなたとは異なるかもしれません。
OKHttp Network スタック ( https://gist.github.com/JakeWharton/5616899 )で Volley を使用しています。
これらを Gradle ビルドに追加します:1
compile "com.squareup.okhttp:okhttp:2.7.5"
compile "com.squareup.okhttp:okhttp-urlconnection:2.7.5"
OKHttpStack クラスを追加します。
public class OKHttpStack extends HurlStack {
private final OkUrlFactory okUrlFactory;
public OKHttpStack() {
this(new OkUrlFactory(
new OkHttpClient.Builder()
.certificatePinner(
new CertificatePinner.Builder()
.add("example.com", "sha256/afwiKY3RxoMmLkuRW1l7QsPZTJPwDS2pdDROQjXw8ig=") //This is the cert
.build())
.build();
));
}
public OKHttpStack(OkUrlFactory okUrlFactory) {
if (okUrlFactory == null) {
throw new NullPointerException("Client must not be null.");
}
this.okUrlFactory = okUrlFactory;
}
@Override
protected HttpURLConnection createConnection(URL url) throws IOException {
return okUrlFactory.open(url);
}
}
次に RequestQueue を作成するときは、次のようにします。
Network network = new BasicNetwork(new OKHttpStack());
File cacheDir = new File(context.getCacheDir(), "volley");
int threads = 4;
mRequestQueue = new RequestQueue(new DiskBasedCache(cacheDir), network, threads);
私はまだこれをテストしていないことに注意してください。現時点では固定することを考えています.
幸運を!ガブ
参考文献:
https://gist.github.com/JakeWharton/5616899 https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/recipes/CertificatePinning.java
証明書のピン留めの代わりに、公開鍵のピン留めを使用できます。
network_security_config.xml
詳細情報を使用できます: https://developer.android.com/training/articles/security-config