Пользовательская «пустая» x509trustmanager реализация (то есть одна, которая доверяет всем сертификатам, таким как этот ответ:
https://stackoverflow.com/a/54358567 или «Вариант 2» в этом ответе:
https://stackoverflow.com/a/2893932) часто рекомендуется на этом сайте и другие. Люди (правильно) критикуют это как небезопасные и опасные советы. Обычно это используется у клиентов для доверия к любому сертификату сервера. (
https://gemini.circumlunar.space/docs/speciation.gmi). Большинство обслуживаемых страниц не потребуют сертификата клиента, но я не хочу провалить рукопожатие TLS, если клиент представляет случайный сертификат. Некоторым страницам (например, просмотра журнала для администраторов) может потребоваться конкретный сертификат клиента (например, с общедоступным ключом, хранящимся на сервере на пробеге с жестким кодированием). Другие страницы могут захотеть доверять динамическому списку сертификатов (например, из базы данных зарегистрированных пользователей).
Если я создаю пользовательский x509trustmanager , который доверяет всем сертификатам клиентов и использует это в моем sslserverscocketfact clientocket.getSession (). getPeerCertificates () по-прежнему был предварительно проверен против их личных ключей (т. Е. Если кто-то представляет сертификат администратора, но у него нет личного ключа, будет GetPeerEertificates () , возвращает пустой массив)?
Методы в моем TrustManager Blank/Null? Если этот TrustManager используется только на моей фабрике сокетов сервера, будут ли когда -нибудь называться эти методы?
Есть ли лучший способ достичь того, что я хочу?>
Подробнее здесь:
https://stackoverflow.com/questions/690 ... -java-x509