В настоящее время я пытаюсь передать данные через Интернет через SSL / TLS в Java, и я хочу, чтобы обе стороны аутентифицировались.Я сам реализовал KeyManager, чтобы загрузить пару ключей и представить другой стороне соответствующий сертификат.
Теперь я пытаюсь проверить сертификат, и я делаю это, внедряя свой собственный TrustManager (обе стороныдержите сертификат другой стороны, все самоподписано).Однако getAcceptedIssuers не работает так, как я хочу, потому что даже когда я не возвращаю ни одного, соединение все равно устанавливается без проблем.
Почему в сертификате не отказывают?
protected static class SelectingTrustManager implements X509TrustManager{
final X509TrustManager delegate;
private String[] trustedAliases;
private final KeyStore keystore;
public SelectingTrustManager(X509TrustManager delegate, KeyStore keystore, String[] trustedAliases) {
this.trustedAliases = trustedAliases;
this.keystore = keystore;
this.delegate = delegate;
}
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException{
delegate.checkClientTrusted(chain, authType);
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException{
delegate.checkServerTrusted(chain, authType);
}
public X509Certificate[] getAcceptedIssuers(){
return new X509Certificate[0];
}
}