4

Android アプリで証明書のピン留めを行いたい。私はこれを理解するのに完全にイライラしています。私を助けてください

私が持っているもの:-

  1. .cert タイプの証明書ファイル。
  2. 秘密鍵が格納されている .key タイプの鍵ファイル。

この証明書が実装されるドメイン名がありません。私はIPアドレスしか持っていません。プロジェクトでokHttpとレトロフィットを使用しています。これを実装するためにスタックオーバーフローで多くの例を見てきました。

しかし、私はいくつかのものを得ていません:- 1. ドメイン名がない場合、ssl を IP アドレスに実装することは可能ですか? 2.ピンフィールドには何が含まれますか、私は秘密鍵を持っていません。秘密鍵 (sha256/XXXXXXXXXX) はどこにありますか?

Retrofit provideRetrofit(OkHttpClient okHttpClient, Gson gson) {
    CertificatePinner certPinner = new CertificatePinner.Builder()
            .add("patternField","pins")
            .build();

       OkHttpClient okHttpClientForPinning = new OkHttpClient.Builder()
            .certificatePinner(certPinner)
            .build();
    OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
    try {
       clientBuilder.sslSocketFactory(getSSLConfig(context).getSocketFactory());
    }
    catch (Exception e) {
        e.printStackTrace();
    }

    clientBuilder.hostnameVerifier(new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            boolean value = true;
            //TODO:Some logic to verify your host and set value
            return value;
        }
    });

    return new Retrofit.Builder()
            .baseUrl(backendUrl)
            .client(okHttpClient)                      
            .client(okHttpClientForPinning)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();


}
4

1 に答える 1