Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	КриптоПро JCP, JavaTLS
	 » 
	Ошибка сертификата ru.CryptoPro.ssl.pc_4.cl_5: PKIX path building failed
	 
	
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 01.08.2019(UTC) Сообщений: 43
  Сказал(а) «Спасибо»: 2 раз
  
	 
	
     | 
    
        
            
		      
                Спасибо, объясните поподробнее как:  Цитата: указать ее в панели управления в настройках сервера (там есть поле для ввода с галкой - использовать CRL из файлов)  это на вкладке "Настройки TLS" там поле, галка только текст "Загружать CRL из папки", только получается первые две галки обе снимают эту третью и как сделать чтоб не было проверки.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 01.08.2019(UTC) Сообщений: 43
  Сказал(а) «Спасибо»: 2 раз
  
	 
	
     | 
    
        
            
		      
                А если я отключаю проверку сертификатов выдает Код:WARNING: default context init failed: 
java.security.KeyManagementException: Certificate validation is disabled but required. The check can be turned off using -Dtls_prohibit_disabled_validation=false or SetPrefs (see the programmer's guide) or TLSSettings.
 
 Я пробовал уже, подскажите пожалуйста как правильно это отключить и дать ему проверенный crt, спасибо.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
         | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 01.08.2019(UTC) Сообщений: 43
  Сказал(а) «Спасибо»: 2 раз
  
	 
	
     | 
    
        
            
		      
                Я так отключаю:  Цитата:System.setProperty("tls_prohibit_disabled_validation", "false")  получаю ошибку:  Цитата:Certificate validation is disabled but required. The check can be turned off using -Dtls_prohibit_disabled_validation=false or SetPrefs (see the programmer's guide) or TLSSettings  Я думаю, что это говорит о том что проверка выключена? Я скачал сертификат ca-DDD195D669374970BB1750099EE28202D310FBA9.crl, положил его в папку, которую указал в строчке "Загружать CRL из папки". А как сделать что-бы пакет не пытался проверять сертификаты.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 01.08.2019(UTC) Сообщений: 43
  Сказал(а) «Спасибо»: 2 раз
  
	 
	
     | 
    
        
            
		      
                На данный момент проект выглядит так: 
 Код:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testjtls1;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertPath;
import java.security.cert.CertPathBuilder;
import java.security.cert.CertPathValidator;
import java.security.cert.CertPathValidatorResult;
import java.security.cert.CertStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.CollectionCertStoreParameters;
import java.security.cert.PKIXBuilderParameters;
import java.security.cert.PKIXCertPathBuilderResult;
import java.security.cert.PKIXCertPathValidatorResult;
import java.security.cert.TrustAnchor;
import java.security.cert.X509CertSelector;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import ru.CryptoPro.Crypto.CryptoProvider;
import ru.CryptoPro.JCP.JCP;
import ru.CryptoPro.reprov.RevCheck;
import ru.CryptoPro.ssl.Provider;
//import ru.gosuslugi.dom.schema.integration.house_management_service_async.HouseManagementPortsTypeAsync;
//import ru.gosuslugi.dom.schema.integration.house_management_service_async.HouseManagementServiceAsync;
/**
 *
 * @author home
 */
public class TestGIS_SOAP {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        new TestGIS_SOAP().start();
        
    }
    private SSLContext sc;
    private byte[] buf;
    
//    private HouseManagementPortsTypeAsync getHouseManagementPortAsync() throws DatatypeConfigurationException {
//        HouseManagementPortsTypeAsync houseManagementPort = new HouseManagementServiceAsync().getHouseManagementPortAsync();
//        return houseManagementPort;
//    }
    private void start() {
        try {
            //отключение проверки сертификатов trustStore
            TLSSettings.setDefaultCRLLocation("C:\\Work\\Work\\certs");
            TLSSettings.setDefaultEnableRevocation(true); //если поставить false, то будет java.security.KeyManagementException
            TLSSettings.setDefaultCRLRevocationOffline(true);//изменение вообще не влияет
            TLSSettings.setDefaultCRLRevocationOnline(false);//изменение вообще не влияет
            TLSSettings.setTlsProhibitDisabledValidation(false);//изменение вообще не влияет
            Security.addProvider(new JCP());
            Security.addProvider(new RevCheck());
            Security.addProvider(new CryptoProvider());
            Security.addProvider(new Provider());
            System.setProperty("com.sun.security.enableCRLDP", "true"); // для проверки по CRL DP
            System.setProperty("com.sun.security.enableAIAcaIssuers", "true"); // для загрузки сертификатов по AIA из сети
            System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true"); // для загрузки сертификатов по AIA из сети
            KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
            keyStore.load(null,null);
//            keyStore.load(new FileInputStream("c:\\Work\\Work\\HDImageStore\\new_2012_256.keystore"),
//                    "password".toCharArray());
            KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
            kmf.init(keyStore, "1234567890".toCharArray());//Здесь доступ к контейнеру по умолчанию как я понял
            KeyStore trustStore = KeyStore.getInstance("CertStore", "JCP");//У меня нет хранилища JKC,
            trustStore.load(null, null);    // я добавляю нужные сертификаты сам
            CertificateFactory cf = CertificateFactory.getInstance("X509");
            Certificate trstCert = cf.generateCertificate(new BufferedInputStream(new FileInputStream("c:\\Work\\Work\\CA-PPAK.der")));
            trustStore.setCertificateEntry("certificate", trstCert);
            trstCert = cf.generateCertificate(new FileInputStream("c:\\Work\\Work\\CA-PPAK1.cer"));
            trustStore.setCertificateEntry("ca1", trstCert);
            TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
            tmf.init(trustStore);
            //SSL Контекст
            sc = SSLContext.getInstance("GostTLS");
            sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
//            URL url = new URL("https://testgost2012st.cryptopro.ru/gost2st.txt");
            URL url = new URL("https://api.dom.gosuslugi.ru/ext-bus-home-management-service/services/HomeManagementAsync");
//            URL url = new URL("https://tlsgost-2001auth.cryptopro.ru/");
            HttpsURLConnection cpm = (HttpsURLConnection) url.openConnection();
            cpm.setSSLSocketFactory(sc.getSocketFactory());
            cpm.setDoOutput(true);
            cpm.connect();
            OutputStream os = cpm.getOutputStream();
            os.write(new byte[]{4, 2, 54, 33, 55});
            InputStream is = cpm.getInputStream();
            if (is.available() > 0) {
                buf = new byte[is.available()];
                is.read(buf);
            }
            os.close();
            is.close();
            cpm.disconnect();
        } catch (MalformedURLException ex) {
            Logger.getLogger(TestGIS_SOAP.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TestGIS_SOAP.class.getName()).log(Level.SEVERE, null, ex);
        } catch (KeyStoreException | NoSuchProviderException | NoSuchAlgorithmException | CertificateException | UnrecoverableKeyException | KeyManagementException ex) {
            Logger.getLogger(TestGIS_SOAP.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}    
 
 
 
Согласно инструкции ЖТЯИ.00091-02 91 02-02. Инструкция по использованию (JTLS).pdf пункта "3. Настройка параметров провайдера с помощью Preferences" настроил папку сертификатов, отключил проверку сертификатов по сети, включил оффлайн проверку сертификатов из папки. В папке "C:\\Work\\Work\\certs" все сертификаты есть. Результаты выполнения    log2.txt  (72kb) загружен 3 раз(а).. Если задаю TLSSettings.setDefaultEnableRevocation(false); получаю:    log3.txt  (41kb) загружен 3 раз(а).Изменение tls_prohibit_disabled_validation ничего не дало. Пожалуйста подскажите как правильно выключить проверку. Санчир Момолдаев:  Добавил в cacerts все сертификаты которые были, положение не спасло, ошибка та-же. Всем спасибо. Отредактировано пользователем 27 августа 2019 г. 8:42:49(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Попробуйте так: Код:
Под управлением администратора, если JCP 2.0:
<JRE>/bin/java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl/util -key tls_prohibit_disabled_validation -value false
 
    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 01.08.2019(UTC) Сообщений: 43
  Сказал(а) «Спасибо»: 2 раз
  
	 
	
     | 
    
        
            
		      
                Выполнил это:  Код:
C:\Windows\system32>"C:\Program Files\Java\jdk1.8.0_221\jre\bin\java.exe" ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl/util -key tls_prohibit_disabled_validation -value false
C:\Windows\system32>
 
 Результат не изменился.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                java одна (jdk1.8.0_221) установлена/используется?    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 01.08.2019(UTC) Сообщений: 43
  Сказал(а) «Спасибо»: 2 раз
  
	 
	
     | 
    
        
            
		      
                Это точно я несколько раз проверил, вот: Код:
C:\Work\Work\jcp_GKH\dist>"C:\Program Files\Java\jdk1.8.0_221\jre\bin\java.exe" ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl/util -key tls_prohibit_disabled_validation -value false
C:\Work\Work\jcp_GKH\dist>"C:\Program Files\Java\jdk1.8.0_221\jre\bin\java.exe" -jar jcp_GKH.jar
рту 27, 2019 4:04:25 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0.40424
рту 27, 2019 4:04:25 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
рту 27, 2019 4:04:26 PM ru.CryptoPro.ssl.cl_38 <init>
INFO: %% adding as private keys %%
рту 27, 2019 4:04:26 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: SSLContextImpl init.
рту 27, 2019 4:04:26 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: trigger seeding of SecureRandom
рту 27, 2019 4:04:27 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: done seeding SecureRandom
рту 27, 2019 4:04:27 PM jcp_gkh.Jcp_GKH start
SEVERE: null
java.security.KeyManagementException: Certificate validation is disabled but required. The check can be turned off using -Dtls_prohibit_disabled_validation=false or SetPrefs (see the programmer's guid
e) or TLSSettings.
        at ru.CryptoPro.ssl.SSLContextImpl.engineInit(Unknown Source)
        at javax.net.ssl.SSLContext.init(SSLContext.java:282)
        at jcp_gkh.Jcp_GKH.start(Jcp_GKH.java:90)
        at jcp_gkh.Jcp_GKH.main(Jcp_GKH.java:46)
C:\Work\Work\jcp_GKH\dist>
 
  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Если так запустить "C:\Program Files\Java\jdk1.8.0_221\jre\bin\java.exe" -Dtls_prohibit_disabled_validation=false -jar jcp_GKH.jar что-нибудь изменится?    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	КриптоПро JCP, JavaTLS
	 » 
	Ошибка сертификата ru.CryptoPro.ssl.pc_4.cl_5: PKIX path building failed
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close