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

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top