Я подключаюсь к порту TLS сервера, для которого требуется аутентификация клиента, используя openssl:
хост подключения openssl s_client: порт -cert xxx -key xxx -CAfile xxx
OUTPUT:
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
Рукопожатие прошло успешно, и если я сейчас делаю GET на веб-странице, я получаю содержимое этой веб-страницы.
Пока все хорошо ... Но когда я пытаюсь подключиться, когда не представление сертификата клиента:
openssl s_client connect host: порт
Я получаю тот же OUTPUT, поэтому рукопожатие прошло успешно, но после выполнения GET я получаю 403 запрещенных; что правильно.
Однако теперь мой вопрос: почему же рукопожатие прошло успешно, даже если я не отправил сертификат клиента ?? Я ожидаю, что рукопожатие, и, следовательно, соединение TLS, не будет установлено в первую очередь.