Openssl в режиме клиента: проверка подлинности

Я хочу протестировать реализацию защищенного сервера с помощью openssl (V. 1.0.1 e). Я использую OpenSSL в режиме клиента для подключения к серверу:

openssl s_client -cert client.pem -connect localhost:8888 -debug

это успешно, и я вижу, что SSL рукопожатие имело место.

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

документация указывает:

-cert certname


Используемый сертификат, если он запрашивается сервером. По умолчанию сертификат не используется.

в трассировке wireshark (V. 1.8.10) я вижу, что оба сценария (ie. С и без -cert switch) содержат те же шаги. Протокол TLSv1:

  1. Клиент Привет
  2. Сервер Здравствуйте, Сертификат, Ключ Сервер Exchange, Сервер, Привет Сделано
  3. Обмен Ключами Клиентов
  4. Изменить Спецификацию Шифра
  5. Зашифрованное Сообщение О Рукопожатии
  6. Изменить Спецификацию Шифра
  7. Зашифрованное Сообщение О Рукопожатии

почему соединение успешно выполняется в обоих сценариях, хотя сервер должен отклонять клиентов без сертификатов?
Означает ли Шаг 3, что сертификат клиента представлен серверу?
Как заставить openssl вообще не отправлять сертификат?

14
задан Markus L
18.11.2022 10:27 Количество просмотров материала 3227
Распечатать страницу

1 ответ

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

Если все правильно, то должно быть CertificateRequest во время ServerHello. Шаг 2 должен выглядеть так:

  1. Сервер Hello, Сертификат, Обмен Ключами Сервера, Запрос Сертификата, Сервер Hello Done
0
отвечен Markus L 2022-11-19 18:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх