Назад | Перейти на главную страницу

Firefox очень медленно устанавливает сеансы SSL

Используя wirehark, я обнаружил, что Firefox v3.0 зависает каждый раз перед этапом «обмен ключами клиента, изменение спецификации шифра» при установлении сеанса SSL.

В частности, Firefox отправляет запрос «Обмен ключами клиента» за 0,8–1,8 секунды. Это неприемлемо, поскольку наше приложение поддерживает только HTTPS.

Я тестировал это на IE6 и IE8, оба работают хорошо. Какие-нибудь подсказки?

[Обновить]

Наконец, я нашел причину зависания на 1-2 секунды, отображая все захваченные пакеты в Wireshark. После этапа приветствия сервера Firefox делает запрос к ocsp.verisign.com в сочетании с дополнительным поиском DNS для этого домена. Firefox должен дождаться статуса отзыва от OCSP перед переходом на следующий этап SSL. В зависимости от того, действует ли DNS-кеш, этот процесс занимает 1-2 секунды.

Интересным наблюдением является то, что IP-пакет содержит «обмен ключами клиента» и имеет высокая вероятность чтобы заблудиться и, следовательно, необходима повторная передача TCP. В этом случае процесс может занять в худшем случае 3 секунды. Я не уверен, совпадение это или ошибка. Во всяком случае, вот результат Wireshark:

(дельта-время)

0,369296 src-ip dst-ip TCP [ACK] Seq = 161 Ack = 2741 Win = 65340 Len = 0

2.538835 src-ip dst-ip Обмен ключами клиента TLSv1, изменение спецификации шифра, завершено

2.987034 src-ip dst-ip TLSv1 [Повторная передача TCP] Обмен ключами клиента, изменение спецификации шифра, завершено

Разница между Firefox и IE заключается в следующем: Firefox 3 включает проверку OCSP. по умолчанию где IE только поддерживает его. Итак, как с IE6, так и с IE8 проблем нет. Это действительно проблема "отзыва сертификата". Спасибо

Настроен ли IE на проверку отозванных сертификатов? Там же, где и Firefox? Можете ли вы попробовать отключить оба и посмотреть, исправит ли это это?

Если это так, либо место для отзыва сертификата не работает, либо возникают проблемы с DNS.

Это всего лишь догадка, потому что я не знаком с исходным кодом Firefox.

Точка рукопожатия SSL, которую вы описываете, заключается в том, что реализация SSL в Firefox должна выполнить некоторую «тяжелую» математику (генерацию криптографически безопасных случайных чисел, шифрование с асимметричным ключом). Интересно, наблюдаете ли вы в то время высокую загрузку ЦП на клиенте?

Я подозреваю, что IE может быть быстрее на том же оборудовании, потому что он использует криптографический API (Windows CryptoAPI), который гораздо более склонен использовать преимущества аппаратного криптоускорения, чем Firefox, который, как я считаю, использует собственную криптографическую реализацию.

Проблема в OCSP, а не в CRL. Firefox по умолчанию проверяет OCSP и CRL для определения действительности сертификата. IE поддерживает OCSP, но по умолчанию проверяет только CRL. Вы можете отключить OCSP в Firefox на странице about: config. Это полностью избавило меня от 20-30 секунд ожидания на страницах SSL. Эта же проблема существует в OS X и Linux и не связана (согласно моим тестам) с аппаратным обеспечением или криптографическими API.

Подробнее об OCSP на http://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol