Сообщаю, что у меня работает приведенный в посте №1 вариант со статическим CRL без установки свойства
cpp.setRevocationEnabled(false);
Проверял на двух сертификатах (один валидный и один отозванный) - все работает.
При проверке динамического CRL получаю exception:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Код:
//---------------------
cpp = new PKIXBuilderParameters(trustSet, null);
cpp.setSigProvider(null);
List tempCerts = new LinkedList();
tempCerts.addAll(trustList);
tempCerts.add(certificate);
CollectionCertStoreParameters par = new CollectionCertStoreParameters(tempCerts);
CertStore store = CertStore.getInstance("Collection", par);
cpp.addCertStore(store);
X509CertSelector selector = new X509CertSelector();
selector.setCertificate((X509Certificate) certificate);
cpp.setTargetCertConstraints(selector);
cpp.setRevocationEnabled(true);
PKIXCertPathBuilderResult res = (PKIXCertPathBuilderResult) CertPathBuilder.getInstance("PKIX").build(cpp);
CertPath cp = res.getCertPath();
CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
cpp.setRevocationEnabled(true);
cpv.validate(cp, cpp);
//---------------------
сертификат УЦ в доверенных присутствует, crl в браузере доступен. Свойства установлены:
javax.security.trustStore = C:\.keystore
javax.security.trustStorePassword = root
com.sun.security.enableCRLDP = true
В чем может быть проблема?
Отредактировано пользователем 22 ноября 2010 г. 15:59:43(UTC)
| Причина: Не указана