Я создал сертификат CA (ca.crt), который использовал для подписи сертификата сервера (server.crt) и сертификата клиента (client.crt).
Я тестирую взаимную аутентификацию, но не получаю то, что ожидаю.
Я использую сервер с:
$ openssl s_server -accept 9003 -CAfile ca.crt -cert server.crt -key server.key -Verify 10 -state -msg
и клиент:
$ openssl s_client -connect localhost:9003 -key client.key -cert client.crt -CAfile ca.crt -state -tlsextdebug -verify 10
verify depth is 10
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 C = FR, ...
verify return:1
depth=0 C = FR, ...
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange 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 certificate verify A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read server session ticket A
SSL_connect:SSLv3 read finished A
Связь установлена, и я могу отправить текст на сервер.
Но, если я запускаю клиент с использованием фиктивного KO-client.crt / KO-client.key, не подписанного известным CA, связь также будет в порядке ...
$ openssl s_client -connect localhost:9003 -key KO-client.key -cert KO-client.crt -CAfile ca.crt -state -tlsextdebug -quiet -verify 10
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 C = FR, ...
verify return:1
depth=0 C = FR, ...
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange 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 certificate verify A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read server session ticket A
SSL_connect:SSLv3 read finished A
Я не могу понять, чего мне здесь не хватает.