Сейчас на форуме: tyns777, localhost1, vsv1, asfa (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Модификация Java класса
Посл.ответ Сообщение

Ранг: 8.9 (гость)
Активность: 0.010.02
Статус: Участник

Создано: 09 марта 2020 08:44 · Поправил: droidische
· Личное сообщение · #1

День добрый!
Наткнулся на проблему с классом в JAVA. При создании соединения с сервером, ява проверяет сертификат удалённого сервера и в случае если сертификат не совпадает, соединение разрывается. Очень хочется заглянуть в SSL обмен ПО и сервера. Я попробовал засунуть серт проксирующего сервера в CA certs JAVA не помогло. Залез в код поковырялся посмотрел что там происходит.
В итоге обнаружено:
trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
Certificate server = CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(Base64.decodeBase64(<CERT>))
Сертификат сервера можно поменять в редакторе бинарном, но вот если длинна различная, что делать?
Подскажите пожалуйста, чем можно заменить сертификат на произвольный(с различной длинной сертификата) ?



Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

Создано: 09 марта 2020 09:42
· Личное сообщение · #2

Помнится, я менял строки програмкой DirtyJoe

| Сообщение посчитали полезным: droidische

Ранг: 28.5 (посетитель), 8thx
Активность: 0.070.15
Статус: Участник

Создано: 09 марта 2020 21:45 · Поправил: galenkane
· Личное сообщение · #3

измените true на false через какой-то AsmEditor в функции проверки сертификата



Ранг: 8.9 (гость)
Активность: 0.010.02
Статус: Участник

Создано: 10 марта 2020 07:25 · Поправил: droidische
· Личное сообщение · #4

galenkane
Я тоже надеялсо, что будет просто
Там сложнее вариант. Там блок try ... except, если серти не проходит проверку то мы улетаем в эксепшен и вываливаемся.
_MBK_
Вроде правит и даже вроде класс живой, осталось проверить.



Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

Создано: 10 марта 2020 07:55
· Личное сообщение · #5

А что мешает занопить проверку вообще



Ранг: 28.5 (посетитель), 8thx
Активность: 0.070.15
Статус: Участник

Создано: 10 марта 2020 08:07
· Личное сообщение · #6

return просто сделать надо



Ранг: 8.9 (гость)
Активность: 0.010.02
Статус: Участник

Создано: 10 марта 2020 08:57
· Личное сообщение · #7

так говорю, хочу подсмотреть что мне сервер возвращает.
Если я занопаю проверку, то не увижу ничего.
Code:
  1. try
  2.     {
  3.     SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, null).build();
  4.     SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] {
  5.    "TLSv1"
  6.     }, null, new DefaultHostnameVerifier());
  7.     RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(1000).setConnectTimeout(1000).setConnectionRequestTimeout(1000).build();
  8.     CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultRequestConfig(defaultRequestConfig).build();
  9.     HttpPost request = new HttpPost(url);
  10.     List formData = new ArrayList();
  11.     formData.add(new BasicNameValuePair("instanceId", instanceId));
  12.     formData.add(new BasicNameValuePair("activeCLIENT", (new StringBuilder()).append(si.getClients()).append("").toString()));
  13.     formData.add(new BasicNameValuePair("macCount", (new StringBuilder()).append(si.getMACCount()).append("").toString()));
  14.     formData.add(new BasicNameValuePair("version", NFTVersion));
  15.     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formData, Consts.UTF_8);
  16.     request.setEntity(entity);
  17.     HttpResponse response = httpclient.execute(request);
  18. }
  19. catch(KeyManagementException e)
  20.    {
  21.       throw new ManagementException(com.fluke.nft.manager.ManagerException.status.INVALIDCERT);
  22.      }
  23.      catch(NoSuchAlgorithmException e)
  24.      {
  25.         throw new ManagementException(com.fluke.nft.manager.ManagerException.status.INVALIDCERT);
  26.       }
  27.      catch(KeyStoreException e)
  28.      {
  29.         throw new ManagementException(com.fluke.nft.manager.ManagerException.status.INVALIDCERT);
  30.       }
  31.        catch(ClientProtocolException e)
  32.        {
  33.           e.printStackTrace();
  34.         throw new ManagementException(com.fluke.nft.manager.ManagerException.status.NOT_REACHABLE);
  35.        }
  36. }



 eXeL@B —› Вопросы новичков —› Модификация Java класса
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати