Java: Как настроить одностороннюю аутентификацию SSL для сервера-клиента по локальной сети?

Что мне нужно: Безопасная связь TLS/SSL между сервером и клиентом через сеть LAN. Аутентификация должна быть односторонней:

SSL Односторонняя аутентификация

Что я уже сделал: я создал сервер и клиент, которые могут общаться через сеть Wi-Fi. Я реализовал сокеты SSL, но аутентификация отсутствует... поэтому она не будет работать:)

Где мне нужна помощь: я новичок в TLS/SSL, а также в сетевой безопасности.

  1. Является ли CA обязательным или я могу "подражать" ему? (Он дает серверу свой сертификат, верно?)
  2. Должен ли сервер создавать свой собственный сертификат или я должен выдать его (жестко закодированный)?
  3. Как клиент может проверить этот сертификат?

1 ответ

Решение
  1. СА не является обязательным по сути. Альтернативой сертификату, подписанному ЦС, является самоподписанный сертификат, но если клиентская программа явно не доверяет конкретному самозаверяющему сертификату, аутентификация (проверка) однорангового узла завершится неудачно.

  2. Вы должны создать или запросить сертификат сервера и настроить сервер для использования этого сертификата. Сведения о том, как настроить сертификат и другие параметры TLS, зависят от того, какое серверное программное обеспечение или библиотеку TLS вы используете.

  3. Как правило, клиент имеет коллекцию доверенных сертификатов корневого центра сертификации. Сертификат конечного объекта подписывается либо корневым ЦС, либо промежуточным ЦС, который подписан каким-либо вышестоящим сертификатом, вплоть до корневого. Серверы представляют цепочку сертификатов конечных объектов и любые промежуточные сертификаты, но (обычно) не включая корневой сертификат.

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

    Корневые сертификаты общедоступных ЦС обычно устанавливаются и пользуются доверием по умолчанию в большинстве браузеров и операционных систем. Но вам не нужно использовать общедоступный CA; Вы можете создать частный CA для подписи сертификатов. Если вы сделаете это, клиенты должны быть настроены на доверие к его корневому сертификату (детали различаются в зависимости от программного обеспечения).

    Независимо от того, используете ли вы общедоступный или частный ЦС, если клиенты доверяют корневому ЦС и вы настроили сервер для представления (связанного) сертификата сервера, все должно работать!

Другие вопросы по тегам