Я хочу протестировать мою безопасную серверную реализацию с openssl (v. 1.0.1e). Я использую openssl в режиме клиента для подключения к серверу:
openssl s_client -cert client.pem -connect localhost:8888 -debug
Это успешно, и я вижу, что рукопожатие SSL имело место.
Сервер настроен на отклонение любого клиента, который не представляет сертификат. Я использую приведенную выше команду без ключа -cert
но соединение с сервером успешно установлено.
В документации указано:
-серт сертификат
Сертификат для использования, если он запрашивается сервером. По умолчанию сертификат не используется.
В трассировке Wireshark (v. 1.8.10) я вижу, что оба сценария (т.е. с ключом -cert
и без него) содержат одинаковые шаги. Протокол TLSv1:
- Клиент Привет
- Сервер Hello, Сертификат, Обмен ключами сервера, Сервер Hello Done
- Обмен ключами клиентов
- Изменить спецификацию шифра
- Зашифрованное сообщение рукопожатия
- Изменить спецификацию шифра
- Зашифрованное сообщение рукопожатия
Почему соединение успешно в обоих сценариях, хотя сервер должен отклонять клиентов без сертификатов? Указывает ли шаг 3, что сертификат клиента представлен на сервере? Как мне получить openssl, чтобы вообще не отправлять сертификат?