
У меня проблема с медленным сервером 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
делает, потому что я недостаточно хорошо с этим знаком).
Например:
- Используется ли
ab
повторное использование сеанса TLS? Браузер будет работать гораздо быстрее из-за этого (для последующих запросов). Вы можете проверить это с помощью wireshark (возможно,https://ask.wireshark.org/questions/9007/ssl-session-reuseПолезно) - Использует
ab
шифры, которые, как известно, медленные (вы можете увидеть, какой шифр согласовывается, в ssl_request_log) - Поддерживаете ли вы HTTP keep-alive на HTTPS-подключении? Вы должны это сделать, даже если это будет достаточно долго, чтобы вытащить все ресурсы на странице. Это действительно сократит количество запросов SSL/TLS, отправляемых на сервер.
- Есть ли на вашем сайте контент, подходящий для кэширования (особенно для кэша браузеров)? Используете ли вы заголовки ответов, такие как
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-сертификатах, поскольку это потребляет дополнительные байты и время.