Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Илья Муромец  
#1 Оставлено : 8 июня 2010 г. 13:14:53(UTC)
Илья Муромец

Статус: Участник

Группы: Участники
Зарегистрирован: 25.12.2008(UTC)
Сообщений: 25
Откуда: Че


Пытаемся построить цепочку сертификатов. Целевой сертификат находится в хранилище контейнера FloppyStore. Возможные корневой и промежуточный сертификаты находятся в хранилище сертификатов. Код выглядит примерно так:

Код:
    public static void main(String[] args) throws Exception {
        
        KeyStore store = KeyStore.getInstance("FloppyStore");
        store.load(null,null);
        
        sun.security.x509.X509CertImpl floppyCert = (sun.security.x509.X509CertImpl)store.getCertificate("trans");
        
        X509CertSelector sel = new X509CertSelector();
        //sel.setCertificate(floppyCert);
        sel.setSubject(floppyCert.getSubjectX500Principal().getEncoded());
        
        KeyStore ks = KeyStore.getInstance("CertStore","JCP"); 
        ks.load(new FileInputStream("C:\\Documents and Settings\\Илья\\Мои документы\\Загрузки\\Новая папка\\1"),"1".toCharArray());
        
        Set trustAnchors = new HashSet();
        
        Enumeration list = ks.aliases();
        while(list.hasMoreElements()) {
            String e = (String)list.nextElement();
            TrustAnchor ta = new TrustAnchor((X509Certificate)ks.getCertificate(e), 
                    null);
            trustAnchors.add(ta);
        }
        
        PKIXBuilderParameters params = new PKIXBuilderParameters(ks,sel);
        CertPathBuilder cpb = CertPathBuilder.getInstance(CertPathBuilder.getDefaultType());
        CertPathBuilderResult res = cpb.build(params);
    }


При выполнении cpb.build(params) вылетает исключение
Код:
Exception in thread "main" sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:236)
	at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:194)
	at crypt.jca.Test.main(Test.java:109)


Отсюда вопросы:
1) Из-за чего это может быть? Корневой сертификат в хранилище есть точно.
2) Правильно ли я понимаю концепцию построения цепочек?
3) Возможно ли строить цепочку, не зная заранее что сертификат является корневым для исходного? А то в примере Certificates.java промежуточный и корневой сертификаты жёстко заданы.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.