Я подключаю SSL-клиент к моему серверу SSL. Когда клиент не проверяет сертификат из-за корня, который не существует в хранилище ключей клиента, мне нужно добавить этот сертификат в хранилище локального ключа в коде и продолжить. Существуют примеры для того, чтобы всегда принимать все сертификаты, но я хочу, чтобы пользователь проверил сертификат и добавил его в хранилище локального ключа, не выходя из приложения.
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("localhost", 23467);
try{
sslsocket.startHandshake();
} catch (IOException e) {
//here I want to get the peer certificate, conditionally add to local key store, then reauthenticate successfully
}
Есть много вещей о пользовательских SocketFactory, TrustManager, SSLContext и т.д., и я действительно не понимаю, как они все подходят друг к другу или который будет самым коротким путем для моей цели.