2012-01-11 3 views
1

Я использовал OpenSSL 1.0.0e как на клиенте, так и на сервере, чтобы выполнить тест, но при тестировании безопасного повторного согласования я получил сообщение об ошибке.Не удалось выполнить перезапуск OpenSSL

$ openssl s_client -connect 192.168.1.99:443 -tls1 
... 
Secure Renegotiation IS supported 
... 
R 
RENEGOTIATING 
140501522626208:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:591: 

ответ

4

Чтобы понять проблему в немного более подробно здесь некоторая соответствующая информация:

The official description: 

Протокол TLS, а протокол SSL 3.0 и, возможно, раньше, как он используется в Microsoft (Internet Information Services IIS) 7.0, mod_ssl в Apache HTTP Server 2.2.14 и ранее, OpenSSL до 0.9.8l, GnuTLS 2.8.5 и более ранних версий, службы безопасности сети (NSS) 3.12.4 и ранее, несколько продуктов Cisco и другие продукты, не связывает должным образом рукопожатия с перестройкой с существующим соединением, что позволяет злоумышленникам-мужчинам вставлять данные в сеансы HTTPS, d, возможно, другие типы сеансов, защищенные TLS или SSL, путем отправки неаутентифицированного запроса, который обрабатывается задним числом сервером в контексте пост-пересмотра, связанным с атакой «инъекции в текстовом режиме», также как и проблема «Project Mogul».

Details about the CVE and affected versions: 
     http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3555 


A thorough explanation of the vulnerability, its symptoms and possible solutions: 
     http://www.g-sec.lu/practicaltls.pdf 

Так подвести вверх требования к уязвимости, предпосылки для TLS или соединений SSLv3 быть уязвимыми являются:

1 Сервер признает и принимает полное перезаключение TLS в середине соединения и после начальное рукопожатие

и

2 сервер предполагает, что оба сеанса TLS были проведены переговоры с одним клиентом

и

3 сервер лечит оба сеанса, как один и объединяет их на уровне приложений

Это, как говорится, на основании требований выше тест с сервером на порт 443 показывают, что повторное согласование не допускается:

Общий пример уязвимого сервера

Openssl s_client –connect yourserver.com:443 
    GET/HTTP/1.0 
    Host:yourserver.com 
    R (Triggers renegotiation – if this works, the server accepts enegotiations 
    within an existing TLS session Req. #1) 
    CRLF 
    <server responds with content> (server merged both sessions Req. #2) 

Защищенный сервер

Openssl s_client –connect yourserver.com:443 
    R (Triggers renegotiation) 
    2860:error:1409444C:SSL routines:SSL3_READ_BYTES:tlsv1 alert no 
    renegotiation:./ ssl/s3_pkt.c:1053:SSL alert number 100 

Приветствия!