Требуются ли действительные цифровые сертификаты на клиентах (Java, C ++ и т. Д.) Для успешных соединений https? - PullRequest
3 голосов
/ 16 июня 2009

Я планирую внедрить небольшую автономную программу, которая будет отправлять запрос https на сервер. Требуется ли для этого действительный ssl-сертификат на клиенте? Как работает SSL рукопожатие в этом случае? Есть ли какие-либо проблемы безопасности на клиенте, у которого нет сертификата SSL?

Ответы [ 4 ]

6 голосов
/ 16 июня 2009

Помимо шифрования сетевого трафика, HTTPS обычно используется для аутентификации сервера. То есть, чтобы предоставить клиентам обнадеживающую информацию о том, кто владеет сервером, и т. Д. Чтобы это работало, клиент должен проверить цепочку доверия в сертификате, опубликованном сервером. Чтобы это произошло автоматически, на клиентском компьютере должен быть установлен сертификат, описывающий центр сертификации, выдавший сертификат сервера. Обычно такие сертификаты находятся на вашем компьютере в хранилище под названием «Доверенные корневые центры сертификации», и большинство ОС поставляются с набором общих установленных CA.

Кроме того, многие веб-серверы предлагают функцию, при которой клиент может аутентифицировать себя на сервере, предоставляя сертификат клиента. Веб-сервер может проверять сертификат, поступающий от клиента, и сопоставлять его с набором разрешений на сервере. Эта «аутентификация клиента» не является необходимой для рабочего сеанса HTTPS, однако, это всего лишь опция.

Короче говоря, вам на самом деле не требуется какой-либо сертификат на клиенте, но вам, вероятно, потребуется иметь сертификат корневого ЦС для проверки подлинности сервера. Если у вас нет этого сертификата, вы не сможете доверять серверу (если у вас нет другой веской причины для этого), но вы все равно можете обмениваться данными с ним.

2 голосов
/ 16 июня 2009

Если вы хотите узнать больше о рукопожатии HTTPS и о том, что согласовано, я полностью рекомендую вам посмотреть эту превосходную статью на moserware

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

1 голос
/ 16 июня 2009

Сертификат клиента требуется, только если он требуется для сервера. Сертификат клиента позволяет серверу аутентифицировать клиента, но это полезно, только если на сервере есть список всех авторизованных клиентов. Как правило, это не относится к веб-серверу, поэтому они редко требуют клиентских сертификатов.

При наличии сертификат на стороне клиента не влияет на установление безопасного канала. (Для этого требуется только сертификат сервера, и добавление сертификата клиента в смесь не меняет процесс.) Как только безопасный канал будет установлен, сервер будет использовать сертификат клиента для аутентификации клиента (обычно путем сравнения общедоступного клиента). ключ или имя со списком авторизованных клиентов).

0 голосов
/ 16 июня 2009

Вам не нужен сертификат для установления HTTPS-соединения, но он вам нужен, если вы хотите знать, с кем вы общаетесь.

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