Firefox работает очень медленно при установке сеансов SSL
Используя wireshark, я обнаружил, что 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. Это действительно проблема "отзыва сертификата". Спасибо
4 ответа
Настроен ли 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