Когда вы создаете сокет по умолчанию SSLSocketFactory
и ничего не настраиваете с помощью соответствующих свойств системы и безопасности, используется набор центров сертификации, связанных с вашей средой выполнения Java. С подробным описанием , , это хранилище доверенных сертификатов, найденное в вашей установке JRE по адресу lib/security/cacerts
. Сертификаты, включенные в этот список, являются сертификатами широко распространенных центров сертификации, аналогично списку, который может использовать ваш браузер.
Таким образом, если сервер, к которому вы подключаетесь, использует сертификат, выданный хотя бы одним из этих известных органов, сертификат будет быть проверенным, иначе соединение не будет установлено.
Это гарантирует, что доверенный орган подтвердит личность стороны, к которой вы подключены. Пока их закрытый ключ не был украден, вы можете положиться на имя, указанное в сертификате.
Но вам необходимо проверить имя хоста, чтобы убедиться, что сертификат, представленный сервером, соответствует хосту имя, которое вы ожидаете. Это происходит автоматически, когда вы используете класс URL
, но вам нужно явно установить HostNameVerifier
при непосредственном использовании SSLSocket
.
Наконец, даже после того, как вы знаете, с кем разговариваете, у вас все еще есть оценивать информацию, которую вы им предоставляете. Это не техническая проблема.