Аутентификация API по ssl через okhttpclient 3
Помогите, пожалуйста! Я пытаюсь получить доступ к API с помощью SSL-сертификата *.jks SslContext работает, но аутентификация все еще не удалось
public void setKeyStore(OkHttpClient client, String path, String keystorePWD) {
LinkedList<Protocol> protocols = new LinkedList<>();
protocols.add(Protocol.HTTP_1_1);
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
builder.followRedirects(true).followSslRedirects(true).retryOnConnectionFailure(true).connectTimeout(5, TimeUnit.SECONDS).protocols(protocols).readTimeout(10, TimeUnit.SECONDS).addInterceptor(new HttpRequestLogger()).build();
KeyStore keyStore = readKeyStore(path, keystorePWD); //your method to obtain KeyStore
SSLContext sslContext = SSLContext.getInstance("SSL");
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
if (Trash.emptyValue(keystorePWD)) {
throw new Exception();
}
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, keystorePWD.toCharArray());
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());
builder.sslSocketFactory(sslContext.getSocketFactory(), new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
});
client = builder.build();
}
Сертификат 100% действителен. В другом http клиент работал /