У меня проблема с медленным сервером 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-запросов?
Как вы тестировали свой сервер? Какое приложение работает за вашим HTTPS-сервером? Какой процессор использует ваш сервер? Как видите, в вашем вопросе не хватает многих важных деталей ...
В любом случае, SSL определенно несколько медленнее, чем «чистый» HTTP: криптография с открытым ключом намного медленнее, чем с симметричным ключом, и это та самая причина, по которой pubkey используется только для обмена частным симметричным ключом и каналом, который переключается на симметричный ключ крипто.
Вы должны понимать разницу между тем, что ab
делает и что делает браузер. (Я не буду отвечать, что ab
делает, потому что я недостаточно знаком с ним).
Например:
ab
используете повторное использование сеанса TLS? Браузер будет работать и будет работать намного быстрее из-за этого (для последующих запросов). Вы можете проверить это с помощью wirehark (возможно, https://ask.wireshark.org/questions/9007/ssl-session-reuse является полезным)ab
с использованием заведомо медленных шифров (вы можете увидеть, какой шифр согласовывается в ssl_request_log)Cache-Control: public, max-age=3600, s-max-age=3600
.Если вы сконцентрируетесь на них, то легко и быстро сможете заставить сайт, поддерживающий только HTTPS, работать нормально. Это то, что я делаю для сайта потокового видео, который (по сути) только HTTPS, и мне не нужно было беспокоиться о времени соединения SSL.
HTTPS медленнее, потому что у него больше данных для обмена (сертификат X.509 с сервера), у него есть безопасное соединение для передачи данных для настройки, ...
ab
может дать время «Подключиться», и именно здесь вы увидите разницу во времени. Настройка TLS занимает больше времени, чем отсутствие настройки.
Да, это нормально, что HTTPS устанавливает соединение примерно в 3 раза медленнее, чем HTTP. Вот это приятно читать, объясняя почему.
Причины замедления работы сайта:
Сертификаты SSL содержат несколько промежуточных сертификатов, которые увеличивают объем данных во время рукопожатия.
Производительность OCSP и CRL также не исправляется, поскольку веб-сайту требуется 1/3 секунды для ответа на запрос OCSP и установления соединения.
Рекомендации для быстрых HTTPS-соединений:
Использование ресурсов ЦП можно уменьшить за счет сжатия текстового содержимого или обновления текущего процесса для обработки задачи шифрования.
Вам необходимо убедиться, что все на странице загружается через HTTPS.
Воспользоваться помощью SPDY - сетевой протокол Google с открытым исходным кодом, минимизирующий время загрузки веб-страницы.
На стороне центра сертификации центры сертификации могут уменьшить время отклика OCSP и CRL от 300 мс до 100 мс (миллисекунды).
Центр сертификации может уменьшить размер промежуточной цепочки в сертификатах SSL, поскольку потребляет дополнительные байты и время.