Как включить OCSP в X509TrustManager?

System.setProperty("com.sun.net.ssl.checkRevocation", "true");
Security.setProperty("ocsp.enable", "true");

Действительно ли достаточно установить эти свойства для включения OCSP?

Если да, то зачем нам нужна поддержка OCSP надувного замка, а не просто установка этих свойств?


person mdavid    schedule 26.11.2016    source источник
comment
Вы проверили это?   -  person Hmmmmm    schedule 27.11.2016
comment
Да, но это какое-то заказное ненадежное решение. Мне нужен стандартный способ ведения дел (например, какой-то класс, предоставляемый java, который уже это делает)   -  person mdavid    schedule 27.11.2016
comment
Пожалуйста, не задавайте два вопроса в одном. Задайте новый вопрос, если выполнение проверки OCSP с помощью HostNameVerifier допустимо.   -  person Paul Wasilewski    schedule 29.11.2016


Ответы (1)


Если сертификаты содержат Расширение доступа к информации о полномочиях (OCSPSigning), вам больше нечего делать, кроме как установить упомянутые вами свойства.

System.setProperty("com.sun.net.ssl.checkRevocation", "true");
Security.setProperty("ocsp.enable", "true");

См. RFC3280 и Как активировать OCSP с помощью OpenSSL для получения дополнительной информации.

Если ваш ЦС не предоставляет это расширение для выданных сертификатов, вы можете настроить URL-адрес ответчика, установив свойство

Security.setProperty("ocsp.responderURL", ...)

По умолчанию расположение ответчика OCSP определяется неявным образом из проверяемого сертификата. Свойство используется, когда расширение доступа к информации центра сертификации (определенное в RFC 3280) отсутствует в сертификате или когда оно требует переопределения.

Если сертификат вашего ответчика OCSP не соответствует сертификату эмитента, вы можете установить альтернативное имя субъекта, установив

Security.setProperty("ocsp.responderCertSubjectName", ...);

По умолчанию сертификат ответчика OCSP является сертификатом эмитента проверяемого сертификата. Это свойство определяет сертификат ответчика OCSP, если значение по умолчанию не применяется. Его значение — строковое различающееся имя (определенное в RFC 2253), которое идентифицирует сертификат в наборе сертификатов, предоставленных во время проверки пути сертификата. В тех случаях, когда одного имени субъекта недостаточно для уникальной идентификации сертификата, вместо этого необходимо использовать оба свойства ocsp.responderCertIssuerName и ocsp.responderCertSerialNumber. Когда это свойство установлено, эти два свойства игнорируются.

Описание всех свойств, которые можно использовать для настройки OCSP, см. в Руководство программиста PKI JavaTM.


Почему нам нужна поддержка OCSP надувного замка, а не просто установка этих свойств?

Никто не говорит, что вы должны использовать надувной замок в качестве поставщика услуг безопасности. Использование Sun JCE по умолчанию нормально, по крайней мере, в случае использования JRE 1.8.

person Paul Wasilewski    schedule 29.11.2016
comment
а как насчет замка Баунти...? - person mdavid; 29.11.2016
comment
а как насчет JRE 1.7 и замка баунти? Кроме того, где именно я должен разместить строки в моей реализации TrustManager? - person mdavid; 30.11.2016
comment
@mdavid на самом деле, вам просто нужно заменить поставщика услуг безопасности, чтобы использовать надувной замок. Настройки OCSP останутся прежними. Также возможно использование JRE 1.7 без надувного замка. - person Paul Wasilewski; 30.11.2016
comment
можете ли вы показать, где именно в моем коде я должен указать настройки? - person mdavid; 30.11.2016
comment
будет ли это вызывать исключение? где я должен обрабатывать ответ? - person mdavid; 30.11.2016
comment
Я установил свойства, но не получаю никаких запросов к моему ответчику - person mdavid; 01.12.2016
comment
@mdavid, пожалуйста, задайте новый вопрос. Покажите свой код и конфигурацию на проверяемом примере. - person Paul Wasilewski; 02.12.2016
comment
вот мой вопрос если приложение">stackoverflow.com/questions/40914688/ - person mdavid; 02.12.2016
comment
на самом деле решение, которое вы предоставили, не работает для меня - person mdavid; 02.12.2016