Ошибка SSLSniff: «SSL Accept Failed» - PullRequest
2 голосов
/ 22 февраля 2012

Я пытаюсь использовать инструмент SSLSniff, и у меня есть некоторые технические проблемы ... Я искал подобные проблемы, но единственные результаты получены из каналов Twitter без публичного полезного ответа. Итак, вот оно:

(моя версия SSLSniff - 0.8) Я запускаю sslsniff с аргументами:

sslsniff -a -c cert_and_key.pem -s 12345 -w out.log  

где: файл cert_and_key.pem - это сертификат моего органа, связанный с моим незашифрованным закрытым ключом (в формате PEM, конечно), а 12345 - порт, куда я перенаправляю трафик с моим правилом iptables.

Итак, sslsniff работает правильно:

INFO sslsniff : Certificate ready: [...]  

[И каждый раз, когда я соединяюсь с клиентом, появляются следующие 2 строки:]

DEBUG sslsniff : SSL Accept Failed!  
DEBUG sslsniff : Got exception: Error with SSL connection.

На стороне моего клиента я зарегистрировал свой AC как доверенный CA (с FF). Затем, когда я подключаюсь через SSL, у меня появляется ошибка:

Secure Connection Failed.  
Error code: ssl_error_bad_cert_domain

Что очень странно (более того, тот факт, что сертификат не принимается автоматически, поскольку он должен быть подписан моим доверенным центром сертификации), заключается в том, что я не могу принять поддельный сертификат, нажав «Добавить исключение ...»: я всегда возвращаясь к странице с ошибкой, прося добавить (другое) исключение ...

Более того, когда я пытаюсь подключиться к, например: https://www.google.com, Журнал SSLSniff завершается новой строкой:

DEBUG sslsniff : Encoded Length: 7064 too big for session cache, skipping...  

Кто-нибудь знает, что я делаю не так?

- отредактировать на лету разные ответы -

Проблема в том, что SSLSniff не заботится об альтернативных именах, когда подделывает сертификаты. По-видимому, Firefox отказывается от любого сертификата, как только общее имя не соответствует точно доменному имени.

Например, для Google.com: CN = www.google.com, альтернативного имени нет. Поэтому при подключении к https://www.google.com, все работает нормально.
Но для Google.fr: CN = * .google.fr с такими альтернативными именами: * .google.fr и google.fr. Поэтому при подключении к https://www.google.fr, FF ищет альтернативные имена и, поскольку он, очевидно, не находит их, отказывается от неверно сформированного сертификата.

... Таким образом, решение будет заключаться в том, чтобы патчить / фиксировать ... Я не знаю, намеренно ли Мокси Марлинспайк забыл эту функциональность, потому что она была слишком сложной, или он просто не знал об этой проблеме. В любом случае, я попытаюсь взглянуть на код.

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Сообщение об ошибке длины закодированного сеанса: если кэширование сеанса SSL завершается неудачно, это означает, что возобновление сеанса SSL при последующих подключениях завершится неудачно, что приведет к снижению производительности, поскольку при каждом запросе необходимо выполнять полное рукопожатие SSL.Однако, несмотря на более интенсивную загрузку процессора, sslsniff все равно будет работать нормально.Кэширование завершается неудачно, потому что сериализованное представление объекта сеанса OpenSSL (SSL_SESSION) было больше, чем максимальный размер, поддерживаемый кешем сеанса sslsniff.

Что касается вашей реальной проблемы, обратите внимание, что sslsniff не поддерживает X.509v3 subjectAltNames,поэтому, если вы подключаетесь к сайту, имя хоста которого не соответствует общему имени субъекта сертификата, но вместо этого соответствует только subjectAltName, тогда sslsniff создаст поддельный сертификат без subjectAltNames, что приведет к несоответствию проверки имени хоста на подключающемся клиенте.

Если ваша проблема возникает только для некоторых конкретных сайтов, сообщите нам об этом сайте, чтобы мы могли проверить сертификат сервера, используя, например, openssl s_client -connect host:port -showcerts и openssl x509 -in servercert.pem -text.Если это происходит для всех сайтов, то вышеприведенное не является объяснением.

1 голос
/ 24 февраля 2012

Попробуйте прямой MITM с сертификатом, который вы полностью контролируете, и убедитесь, что у вас нет OCSP / Perspectives / Convergance материал, вмешивающийся в вещи. Кроме этого, возможно, добавьте сертификат в доверенные корни ОС. Я думаю, что FF на окнах использует хранилище сертификата Windows (start-> run-> certmgr.msc). Может также стоить попробовать с чем-то вроде Burp проверить, локализована ли ошибка для SSLSniff или для всех попыток MITM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...