Мне нужно игнорировать исключение для построения PKIX
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExc
ption: unable to find valid certification path to requested target
Я знаю, как это сделать, написав собственный класс, реализующий X509TrustManager
, где я всегда return true
из isServerTrusted
.
Однако я не хочу доверять всем серверам и всем клиентам.
- Я хочу, чтобы все проверки по умолчанию выполнялись для клиентов, как это делается в настоящее время.
- Для серверов я хочу игнорировать проверку сертификата сервера только для одного конкретного сертификата, но хочу продолжить и проверить его, как это делается в настоящее время (например, с использованием хранилища cacerts).
Как я могу достичь чего-то подобного, то есть передать часть проверки тому, что было объектом X509TrustFactory, прежде чем я его заменил.
то есть. это то, что я хочу сделать
public boolean isServerTrusted(X509Certificate[] chain)
{
if(chain[0].getIssuerDN().getName().equals("MyTrustedServer") && chain[0].getSubjectDN().getName().equals("MyTrustedServer"))
return true;
// else I want to do whatever verification is normally done
}
Также я не хочу нарушать существующую проверку isClientTrusted
.
Как я могу это сделать?