Безопасно ли отправлять пароль через сокет, созданный по умолчанию SSLSocketFactory? - PullRequest
0 голосов
/ 17 января 2020

Не задумываясь, я отправил пароль через соединение, созданное с использованием Socket, созданного по умолчанию SSLSocketFactory в Java. Для SSLSocketFactory.getDefault() в документации указано следующее:

Возвращает фабрику сокетов SSL по умолчанию. При первом вызове этого метода проверяется свойство безопасности ssl.SocketFactory.provider. Если он не равен NULL, класс с таким именем загружается и создается. Если это успешно и объект является экземпляром SSLSocketFactory, он становится фабрикой сокетов SSL по умолчанию.

В противном случае этот метод возвращает SSLContext.getDefault().getSocketFactory(). Если этот вызов не удался, возвращается неработающая фабрика.

Я уверен, что Java не пытается меня обмануть, но, поскольку это был мой первый раз, я хотел убедиться, что что это было то, на что я могу положиться при шифровании пароля.

РЕДАКТИРОВАТЬ: В конце данных свойства для «Set-Cook ie» в ответе сервера он говорит «HttpOnly», а затем «Безопасный» , Я предполагаю, что это означает, что сервер подтвердил, что соединение было безопасным, но я не уверен на 100%.

1 Ответ

0 голосов
/ 18 января 2020

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

Таким образом, если сервер, к которому вы подключаетесь, использует сертификат, выданный хотя бы одним из этих известных органов, сертификат будет быть проверенным, иначе соединение не будет установлено.

Это гарантирует, что доверенный орган подтвердит личность стороны, к которой вы подключены. Пока их закрытый ключ не был украден, вы можете положиться на имя, указанное в сертификате.

Но вам необходимо проверить имя хоста, чтобы убедиться, что сертификат, представленный сервером, соответствует хосту имя, которое вы ожидаете. Это происходит автоматически, когда вы используете класс URL, но вам нужно явно установить HostNameVerifier при непосредственном использовании SSLSocket.

Наконец, даже после того, как вы знаете, с кем разговариваете, у вас все еще есть оценивать информацию, которую вы им предоставляете. Это не техническая проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...