конф

конф

У меня проблема с медленным сервером Apache с сертификатом SSL 256bit

ab -n 500 https://example.com/
Time per request 29 ms

ab -n 500 http://example.com/
Time per request 10 ms

В обоих запросах отправляется 52 байта, а тесты проводятся с сервера в одном и том же центре обработки данных.

конф

SSLEngine on
SSLProtocol All -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM

Нормально ли, что SSL в 3 раза медленнее обычных HTTP-запросов?

решение1

Как вы тестировали свой сервер? Какое приложение работает за вашим HTTPS-сервером? Какой процессор использует ваш сервер? Как вы видите, в вашем вопросе не хватает многих важных деталей...

В любом случае, SSL, безусловно, несколько медленнее, чем «чистый» HTTP: криптография с открытым ключом намного медленнее, чем с симметричным ключом, и именно по этой причине открытый ключ используется только для обмена закрытым симметричным ключом, а канал переключается на криптографию с симметричным ключом.

решение2

HTTPS работает медленнее, поскольку ему приходится обмениваться большим объемом данных (сертификат X.509 с сервера), ему нужно настроить защищенное соединение для передачи данных, ...

abможно задать время «Подключиться», и тогда вы увидите разницу во времени. Настройка TLS занимает больше времени, чем отсутствие настройки.

решение3

Вам нужно осознать разницу между тем, что abделает, и тем, что делает браузер. (Я не буду отвечать на вопрос, что abделает, потому что я недостаточно хорошо с этим знаком).

Например:

  1. Используется ли abповторное использование сеанса TLS? Браузер будет работать гораздо быстрее из-за этого (для последующих запросов). Вы можете проверить это с помощью wireshark (возможно,https://ask.wireshark.org/questions/9007/ssl-session-reuseПолезно)
  2. Использует abшифры, которые, как известно, медленные (вы можете увидеть, какой шифр согласовывается, в ssl_request_log)
  3. Поддерживаете ли вы HTTP keep-alive на HTTPS-подключении? Вы должны это сделать, даже если это будет достаточно долго, чтобы вытащить все ресурсы на странице. Это действительно сократит количество запросов SSL/TLS, отправляемых на сервер.
  4. Есть ли на вашем сайте контент, подходящий для кэширования (особенно для кэша браузеров)? Используете ли вы заголовки ответов, такие как Cache-Control: public, max-age=3600, s-max-age=3600.

Если вы сосредоточитесь на них, то вы можете легко заставить HTTPS-only сайт работать хорошо и быстро. Это то, что я делаю для сайта потокового видео, который (фактически) HTTPS-only, и мне не пришлось беспокоиться о времени SSL-подключения.

решение4

Причины замедления работы сайта:

  • SSL-сертификаты содержат несколько промежуточных сертификатов, которые увеличивают объем данных во время установления связи.

  • Производительность OCSP и CRL также не корректируется, поскольку веб-сайту требуется 1/3 секунды для ответа на запрос OCSP и установления соединения.

Рекомендации по быстрым HTTPS-соединениям:

  • Использование ресурсов ЦП можно снизить путем сжатия текстового контента или модернизации текущего процесса для обработки задачи шифрования.

  • Вам необходимо убедиться, что все данные на странице извлекаются по протоколу HTTPS.

  • Принять помощьСПДД- открытый сетевой протокол Google, минимизирующий время загрузки веб-страниц.

  • Со стороны центра сертификации центры сертификации могутсократить время ответа OCSP и CRLот 300 мс до 100 мс (миллисекунд).

  • Центр сертификации может уменьшить размер промежуточной цепочки в SSL-сертификатах, поскольку это потребляет дополнительные байты и время.

Связанный контент