Проверка действительности пути
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2

ТЕМА: Проверка действительности пути

Проверка действительности пути 3 года, 2 мес. назад #2270

  • StalkAlex
  • Новый участник
  • Постов: 16
  • Репутация: 0
Доброе время суток!

Появилось небольшое затруднение. В вашей библиотеке имеется класс PKIXCertPathReviewer и метод isValidCertPath у него соответственно. Чтоб создать экземпляр этого класса, надо передать CertPath и PKIXParameters. Не подскажите как корректно создать эти параматеры? Реализация на Java.
Изменено: 3 года, 2 мес. назад от StalkAlex.

Re: Проверка действительности пути 3 года, 2 мес. назад #2273

  • StalkAlex
  • Новый участник
  • Постов: 16
  • Репутация: 0
Почему вопрос оставили без внимания? Он ведь касается вашей библиотеки.

Re: Проверка действительности пути 3 года, 2 мес. назад #2280

  • StalkAlex
  • Новый участник
  • Постов: 16
  • Репутация: 0
На случай, если кому-то еще понадобится помощь

stackoverflow.com/questions/37583814/cor...h-chains-in-certific
Изменено: 3 года, 2 мес. назад от StalkAlex.

Re: Проверка действительности пути 3 года, 2 мес. назад #2315

  • ololo
  • Живу я здесь
  • Постов: 464
  • Репутация: 57
Добрый день.
Вы используете напрямую классы, которые могутв дальнейшем устареть.
Вам необходимо обращаться через уровень абстракции JCA.
CertPathBuilder для построения пути, CertPathValidator для проверки уже существующего пути.

Provider p = ProviderUtil.loadKalkanProvider();
X509Certificate ca = X509Util.loadX509Certificate("/tmp/ca/root_ca_rsa.cer", p);
X509Certificate nca = X509Util.loadX509Certificate("/tmp/ca/root_nca_rsa.cer", p);
X509Certificate cert = X509Util.loadX509Certificate("/tmp/cert/user.cer", p);
X509CRL crl = X509Util.loadX509CRL("/tmp/ca/rsa.crl", p);
X509CRL rcrl = X509Util.loadX509CRL("/tmp/ca/root_rsa.crl", p);
ArrayList<X509Extension> list = new ArrayList<X509Extension>();
list.add(nca);
list.add(cert);
list.add(crl);
list.add(rcrl);
CollectionCertStoreParameters certStoreParameters = new CollectionCertStoreParameters(list);
CertStore certStore = CertStore.getInstance("Collection", certStoreParameters, p);
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX", p);
// проверка до корневого CA, можно сократить до промежуточного NCA
TrustAnchor anchor = new TrustAnchor(ca, null);
Set<TrustAnchor> anchors = new HashSet<TrustAnchor>();
anchors.add(anchor);
X509CertSelector selector = new X509CertSelector();
// задаем параметры для селектора конечного сертификата или можно указать полное соответствие сертификата
//selector.setSerialNumber(cert.getSerialNumber());
//selector.setIssuer(cert.getIssuerX500Principal());
selector.setCertificate(cert);
PKIXBuilderParameters builderParameters = new PKIXBuilderParameters(anchors, selector);
// если не добавляли список CRL, то надо отключить проверку
//builderParameters.setRevocationEnabled(false);
builderParameters.addCertStore(certStore);
builderParameters.setSigProvider(p.getName());
PKIXCertPathBuilderResult builderResult = (PKIXCertPathBuilderResult) builder.build(builderParameters);
System.out.println(builderResult);
// можем закодировать и сохранить полученный путь в форматах PkiPath/PKCS7/PEM
//builderResult.getCertPath().getEncoded("PkiPath");
gg wp
Изменено: 3 года, 2 мес. назад от ololo.
Спасибо сказали: StalkAlex

Re: Проверка действительности пути 3 года, 2 мес. назад #2318

  • StalkAlex
  • Новый участник
  • Постов: 16
  • Репутация: 0
Добрый день, спасибо большое за столь развернутый ответ. По поводу устаревания, немного не понял, какие классы могут устареть?

P.S. Если желаете, можете оформить как ответ на стаковерфлоу, я помечу как корректный.
Изменено: 3 года, 2 мес. назад от StalkAlex.

Re: Проверка действительности пути 3 года, 2 мес. назад #2320

  • ololo
  • Живу я здесь
  • Постов: 464
  • Репутация: 57
Добрый день.
Например, к PKIXCertPathReviewer нельзя обратиться через уровень абстракции, вы импортируете его напрямую из провайдера. Если этот класс в будущем будет удален/перенесен в другой пакет/сигнатура методов изменится - то ваше приложение сломается при замене библиотеки провайдера, и вам придется вносить изменения.

PS. Как оформить?
gg wp
  • Страница:
  • 1
  • 2
FaLang translation system by Faboba