powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема запроса с сертификатом на яве
6 сообщений из 6, страница 1 из 1
Проблема запроса с сертификатом на яве
    #39394275
зубок александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Ошибкаа известная и не новая а вот не выходит каменный цветок.
Раньше с сертификатамии работал только из браузеров а теперь надо программно загрузить. Сертификат на входе p12.

Конвертнул его в crt и потом jks и далее завел собственное хранилище cacerts - ибо в стандартное он не лез ни в ккоом виде- ругань была в стиле на то что сертификат не X.509

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
public synchronized void checkForDuplicates(Lei lei) throws Exception{	
		
 		if (readTestXML.readFile("C:\\work\\Docs\\xml_lei_1_duplicate_001.xml"))
		{
		   try
		   {
			 String keyPassphrase = "111111";
			   
			 SSLContext sslContext = SSLContext.getInstance("TLS"); 
		
	 sslContext.init(null, new TrustManager[]{tm}, new java.security.SecureRandom()); 
			   
			// настройки cacerts и прочег везде в статьях по разному применены - сейчас все примерно в таком виде
			 System.setProperty("javax.net.ssl.trustStore", "/work/cacerts");
			 System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
			 System.setProperty("javax.net.ssl.trustStoreType", "JKS");
			   
			 System.setProperty("javax.net.ssl.keyStore", "/work/cert.p12");
			 System.setProperty("javax.net.ssl.keyStorePassword",keyPassphrase);	
			 System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
		
			
		     URL url=new URL(strUrl);
		     
		     KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
		   
		     keyStore.load(new FileInputStream("/work/keystore.jks"), keyPassphrase.toCharArray());		     		     
		     

		     TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); 
		    		 
		     
		     tmf.init(keyStore);
		     
		   
		     
		     sslContext.init(null, tmf.getTrustManagers(), new java.security.SecureRandom());
		     
		     HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
		     
		     HostnameVerifier allHostsValid = new HostnameVerifier() {
					@Override
					public boolean verify(String hostname, SSLSession session) {						
						return true;
					}
		        };
		     
		     HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
		     		     
		     HttpsURLConnection httpcon=(HttpsURLConnection)url.openConnection();
		     httpcon.setSSLSocketFactory(sslContext.getSocketFactory());
		     httpcon.setDoOutput(true);
		     httpcon.setDoInput(true);
		     httpcon.setUseCaches(false);
		     httpcon.setAllowUserInteraction(false);
	         httpcon.setRequestMethod("POST");	       
	      
	         String authStr = testLeiStr + ":" + pass;
	         httpcon.setRequestProperty  ("Authorization", "Basic " + Base64.getEncoder().encodeToString(authStr.getBytes()));	       
	         httpcon.setConnectTimeout(longOfTimeout);
	         httpcon.setRequestProperty("Accept", "application/json");
	         httpcon.setRequestProperty("Content-Type", "application/json");
// тут сама ошибка проявляется	        
	         OutputStreamWriter output = new OutputStreamWriter(httpcon.getOutputStream());
	         
	         System.out.println(readTestXML.getResStr());
	         httpcon.connect();
	         output.write(readTestXML.getResStr());	         
	         
	         gleifDuplicateCheckJsonRead.readResponceB(httpcon.getResponseMessage());
		   }
		   catch (Exception e)
		   {
			 new Notification(app.getMessage("gleifDuplicate.msgErrorQuestion") + " " + e, Notification.Type.ERROR_MESSAGE).show(Page.getCurrent());
			 log.debug(e.getMessage());
		   }
		}
	}	



Сама ошибка звучит как
Код: java
1.
error javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCer



Как я понимаю сертификат ява надежным не считает. Вне явы из мозиллы и хрома все отилчно работает. Со стороны сервака никто подсказать никогда не сможет - там своя бюрократия - максимум могут скаазать у нас все работает а как выбудете использовать наш сертификат не наша проблема - да вот такая система и все.

Собственно хтелось бы знать как лечить данную ошибку. Проблема в настройказ хранилища, конвертации или коде и если в коде то где?
...
Рейтинг: 0 / 0
Проблема запроса с сертификатом на яве
    #39394289
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема запроса с сертификатом на яве
    #39395051
зубок александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, эффект тот же

По сути код мало чем отличается от моего разве только для свойст исполььщуется динамический объект.

И еще при конвертации сертификата и добавленни его в хранилище наблюдается также весьма инетресный эффект (сегодня переносил все в ресурсы проекта и снова переконвертировал все)

вот сама строка конвертации keytool -import -v -alias eqs -file keystore.jks -keystore C:\Users\azubok\git\lei\src\main\resources\cert\cacerts

А вот ошибка

Код: java
1.
2.
3.
4.
5.
6.
Keytool-Fehler: java.lang.Exception: Eingabe kein X.509-Zertifikat
java.lang.Exception: Eingabe kein X.509-Zertifikat
                at sun.security.tools.keytool.Main.addTrustedCert(Main.java:2655)
                at sun.security.tools.keytool.Main.doCommands(Main.java:1009)
                at sun.security.tools.keytool.Main.run(Main.java:343)
                at sun.security.tools.keytool.Main.main(Main.java:336)


Как я понимаю проблема связана с предидущей.

И вообщем то хотелось ы понимать проблема все же моего кода или проблема в том что сертификат не пригоден для конвертации в формат явы - как явствует из статей в инете именно для явы требуется эта самая конвертация.Тот же пхп похволяет использовать оригинальный сертификат.
...
Рейтинг: 0 / 0
Проблема запроса с сертификатом на яве
    #39395406
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зубок александрСама ошибка звучит как
Код: plaintext
1.
2.
error javax.net.ssl.SSLHandshakeException:
 sun.security.validator.ValidatorException:
  PKIX path building failed: sun.security.provider.certpath.SunCer
Как я понимаю сертификат ява надежным не считает.Перевожу: "Не могу построить цепочку доверия (до корневого УЦ)".
В хранилище, с которым работает тул, должен быть импортирован сертификат корневого УЦ.
Цепочка сертификатов может храниться в контейнере (небезопасно) или сертификат корневого УЦ ищется ручками.

P.S. Взял на себя смелость заменить тэг и форматирование на более адекватные.
...
Рейтинг: 0 / 0
Проблема запроса с сертификатом на яве
    #39395828
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зубок александрВсем привет. Ошибкаа известная и не новая а вот не выходит каменный цветок.

Возьмите мой работающий пример. Сертификаты сгенирите вот этим кодом

https://github.com/SVyatkin/tomcat-ssl-java-example/blob/master/scripts/generateClientServerSSCerts.sh


Все подробно расписано и главное работает

https://vyatkins.wordpress.com/2013/11/19/java-base-ssl-connection-to-tomcat-with-server-and-client-certifications/
...
Рейтинг: 0 / 0
Проблема запроса с сертификатом на яве
    #39396616
зубок александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

проблема была с сертификатом.
спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема запроса с сертификатом на яве
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]