Я пытаюсь получить http-запрос к REST-конечной точке.Я связан с okhttp2.7.5, поскольку среда, которую я использую для проекта, определяет его.Мои исследования привели меня к следующей теме:
Вопрос, на котором я основывал свой код:
И поэтому мой код выглядит так:
OkHttpClient httpClient = new OkHttpClient();
SSLContext sslContext;
TrustManager[] trustManagers;
char[] keyPassword = "123456".toCharArray();
String keyLocation = "key.pem";
String host = "https://localhost:";
Integer port = 8150;
try {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
InputStream keyStoreData = new FileInputStream(keyLocation);
BufferedInputStream bis = new BufferedInputStream(keyStoreData);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
Certificate cert = certificateFactory.generateCertificate(bis);
keyStore.setCertificateEntry(host + port, cert);
}
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
trustManagers = trustManagerFactory.getTrustManagers();
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, keyPassword);
sslContext = SSLContext.getInstance("SSL");
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(),
new SecureRandom());
httpClient.setSocketFactory(sslContext.getSocketFactory());
} catch (NoSuchAlgorithmException | KeyStoreException | UnrecoverableKeyException | KeyManagementException
| CertificateException | IOException e) {
throw new RuntimeException(e);
}
При его использовании я получаю сообщение об ошибке:
java.lang.RuntimeException: java.security.cert.CertificateParsingException: signed overrun, bytes = 465
Я знаю, что мой сертификат хорош и действителен, поскольку его можно без проблем использовать в запросах Почтальона.
С наилучшими пожеланиями за помощь, ребята