Расширенная проверка в основном полезна с точки зрения пользовательского интерфейса.Это не очень полезно, если у вашего клиента нет ничего в его пользовательском интерфейсе для отображения сертификата.Эти проверки по умолчанию не интегрированы в JSSE, возможно, из-за небольшого спроса на них (отсутствие браузеров Java).(Между прочим, вы должны проверить сертификат, который вы получаете при подключении, а не проверять первое соединение и подключиться к другому, на всякий случай).
Спецификации определены на форуме CA / browser..
Значения OID и отпечатки корневого сертификата CA жестко запрограммированы в браузерах (см. security/certverifier/ExtendedValidation.cpp
в Firefox, ранее входившем в security/manager/ssl/src/nsIdentityChecking.cpp
).Также для справки есть список в Википедии , хотя в принципе вы должны проверять OID политики с каждым CA.
Для анализа расширений может быть полезно использовать BouncyCastle, если X509Certificate.getExtensionValue()
недостаточно.
Одна проблема, на которую вам следует обратить внимание, заключается в том, что жестко закодированные SHA-1 отпечатки сертификатов корневого ЦС должны точно соответствовать этим сертификатам втрастовый магазин.Некоторые ЦС время от времени обновляют свои сертификаты ЦС в комплектах, поставляемых с большинством браузеров / ОС / JRE: убедитесь, что вы используете их.