Retrofit2和证书固定

时间:2016-05-24 11:56:16

标签: android retrofit2 okhttp3

在我的Android应用程序中,我想在与服务器通信时使用证书固定。 我看到此代码使用存储在keystore文件夹中的raw

OkClient client = new RetrofitClientBuilder()
.pinCertificates(getResources(), R.raw.keystore, STORE_PASS)
.build()

我正在使用retrofit2OkHTTP3,只是看到了这个例子:

 OkHttpClient client = new OkHttpClient.Builder()
    .certificatePinner(new CertificatePinner.Builder()
            .add("publicobject.com", "sha1/DmxUShsZuNiqPQsX2Oi9uv2sCnw=")
            .add("publicobject.com", "sha1/SXxoaOSEzPC6BgGmxAt/EAcsajw=")
            .add("publicobject.com", "sha1/blhOM3W9V/bVQhsWAcLYwPU6n24=")
            .add("publicobject.com", "sha1/T5x9IXmcrQ7YuQxXnxoCmeeQ84c=")
            .build())
    .build();

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("http://api.nuuneoi.com/base/")
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build();

这个后来的方法是否与第一个方法达到相同的结果?

2 个答案:

答案 0 :(得分:0)

我可以说这种方法对我来说非常有用。 只需确保在没有“https://”的情况下正确添加端点到证书pinner,它应该可以正常工作。

答案 1 :(得分:-1)

您应该将sha1/更改为sha256/,对我来说效果很好。