Я хочу протестировать реализацию защищенного сервера с помощью 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:
- Клиент Привет
- Сервер Здравствуйте, Сертификат, Ключ Сервер Exchange, Сервер, Привет Сделано
- Обмен Ключами Клиентов
- Изменить Спецификацию Шифра
- Зашифрованное Сообщение О Рукопожатии
- Изменить Спецификацию Шифра
- Зашифрованное Сообщение О Рукопожатии
почему соединение успешно выполняется в обоих сценариях, хотя сервер должен отклонять клиентов без сертификатов?
Означает ли Шаг 3, что сертификат клиента представлен серверу?
Как заставить openssl вообще не отправлять сертификат?