2016-05-19 2 views
0

Я пытаюсь внедрить аутентификацию на основе сертификата, и я получаю сообщение об ошибке во время установления связи SSL/TLS. Я пытался отладить его с помощью openssl s_client -state -debug -connect example.si:443, но я честно не разбирался достаточно, чтобы иметь возможность интерпретировать результаты:Ошибка установления связи SSL/TLS после обмена ключами клиента

http://pastebin.com/7BiJXeAY

Из того, что я могу сказать, цепочка сертификатов правильно проверить (я «ве также проверили here), и это не кажется, что я сделал ошибки в моем httpd.conf файле, при установке VirtualHost на Apache 2.2 сервера:

<VirtualHost *:443> 
    DocumentRoot D:/www/authentication 
    ServerName lpt.uni-mb.si 
    ServerAlias lpt.uni-mb.si 
    SSLEngine on 
    SSLCertificateFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\22_lpt.uni-mb.si.crt" 
    SSLCACertificateFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\root.crt" 
    SSLCertificateKeyFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\server.key" 
    SSLCertificateChainFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\11_Intermediate.crt" 
    SSLProtocol all -SSLv2 -SSLv3 
    SSLCipherSuite HIGH:!aNULL:!MD5:!RC4 
    SSLVerifyClient require 
    SSLVerifyDepth 10 
    SSLOptions +StdEnvVars +ExportCertData 
    <Directory "D:/www/authentication"> 
     Options Indexes Includes 
     AllowOverride All 
     Order Deny,Allow 
     Allow from all 
     Options +FollowSymlinks 
    </Directory> 
</VirtualHost> 

Может быть, есть какая-то проблема с обмен ключа клиента, учитывая очень короткую операцию записи?

+1

Хотя это не решит вашу проблему, вы не должны разрешать устаревшие вкусы SSLv2/v3, а скорее настраивать только TLS: 'SSLProtocol all -SSLv2 -SSLv3'. –

+1

При тестировании взаимного сертификата с сертификатами с использованием 's_client' вам необходимо указать сертификат и ключ. Также см. Страницу ['s_client' man] (http://www.openssl.org/docs/manmaster/apps/s_client.html). – jww

ответ

0

Насколько я могу видеть из вашей ссылки Pastebin, вы Выпущены:

openssl s_client -state -debug 
    -CAfile "C:\Program Files (x86)\Apache Software Foundation\Apache 2.2\conf\ssl\root.crt" 
    -connect lpt.uni-mb.si:443 

пока вы не предоставили сертификат клиента. Попробуйте добавить параметры openssl -cert и -key с файлом cert/key.

+0

Предоставляя '-key server.key -cert lpt.uni-mb.si.pem -CAfile root.crt', ошибка в конце файла изменяется на' SSL_connect: ошибка в SSLv3 write change cipher spec A'. Я предоставляю неправильный ключ, сертификат и ЦС? – NoelAramis

+0

Вы смешиваете серверные и клиентские сертификаты: '22_lpt.uni-mb.si.crt' и' server.key' являются сертификатом/ключом сервера и полностью независимы от сертификата клиента/ключа. Путем настройки 'SSLVerifyClient require'. вы ожидаете, что клиенты представят сертификат, подписанный вашим сертификатом CA ('root.crt'). openssl потребуется только для подключения. –

+0

Вы были правы. Мне пришлось загрузить клиентский .pfx, затем извлечь открытый сертификат и закрытый ключ и предоставить их - тогда это сработало. О, и еще одна вещь .. казалось, что один из промежуточных сертификатов в цепочке отсутствовал в браузере, поэтому мне пришлось вручную добавить это; не знаю, почему. В любом случае, он работает сейчас. – NoelAramis

Смежные вопросы