Последствия для доверия доверия всем клиентским сертификатам на сервере (Java X509TrustManager)JAVA

Программисты JAVA общаются здесь
Anonymous
Последствия для доверия доверия всем клиентским сертификатам на сервере (Java X509TrustManager)

Сообщение Anonymous »

Пользовательская «пустая» 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 () , возвращает пустой массив)?

Код: Выделить всё

getAcceptedIssuers()
Методы в моем TrustManager Blank/Null? Если этот TrustManager используется только на моей фабрике сокетов сервера, будут ли когда -нибудь называться эти методы?
Есть ли лучший способ достичь того, что я хочу?>

Подробнее здесь: https://stackoverflow.com/questions/690 ... -java-x509

Вернуться в «JAVA»