
Tengo un problema con un servidor Apache lento con certificado SSL de 256 bits.
ab -n 500 https://example.com/
Time per request 29 ms
ab -n 500 http://example.com/
Time per request 10 ms
Se envían 52 Bytes en ambas solicitudes y las pruebas se realizan desde un servidor en el mismo centro de datos.
confinar
SSLEngine on
SSLProtocol All -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM
¿Es normal que SSL sea 3 veces más lento que las solicitudes HTTP simples?
Respuesta1
¿Cómo comparaste tu servidor? ¿Qué aplicación se ejecuta detrás de su servidor HTTPS? ¿Qué CPU utiliza su servidor? Como puedes ver, a tu pregunta le faltan muchos detalles importantes...
De todos modos, SSL seguramente es algo más lento que HTTP "puro": la criptografía de clave pública es mucho más lenta que la de clave simétrica, y esta es la razón por la que pubkey solo se usa para intercambiar una clave simétrica privada y el canal cambia a simétrico. criptografía clave.
Respuesta2
HTTPS es más lento porque tiene más datos para intercambiar (el certificado X.509 del servidor), tiene una conexión de datos segura para configurar,...
ab
Puede darle tiempo a 'Conectar' y ahí es donde verá la diferencia de tiempo. La configuración de TLS lleva más tiempo que ninguna configuración.
Respuesta3
Debe darse cuenta de la diferencia entre lo que ab
hace y lo que hace un navegador. (No voy a responder qué ab
significa, porque no estoy lo suficientemente familiarizado con ello).
Por ejemplo:
- ¿
ab
Se reutiliza la sesión TLS? Un navegador lo haría y funcionaría mucho más rápido gracias a ello (para solicitudes posteriores). Puedes verificar esto con Wirehark (quizáshttps://ask.wireshark.org/questions/9007/ssl-session-reusees útil) - Está
ab
utilizando cifrados que se sabe que son lentos (puede ver qué cifrado se negocia en ssl_request_log). - ¿Admite el mantenimiento de conexión HTTPS en la conexión HTTPS? Debería hacerlo, aunque sea durante el tiempo suficiente para extraer todos los recursos de una página. Esto realmente reducirá la cantidad de solicitudes SSL/TLS realizadas al servidor.
- ¿Tiene contenido apto para caché en su sitio (especialmente para el caché del navegador)? ¿Está utilizando encabezados de respuesta como
Cache-Control: public, max-age=3600, s-max-age=3600
.
Si se concentra en ellos, podrá hacer que un sitio solo HTTPS funcione de manera agradable y rápida. Esto es lo que hago para un sitio de transmisión de video que es (efectivamente) solo HTTPS, y no he tenido que preocuparme por los tiempos de conexión SSL.
Respuesta4
Razones de la ralentización del sitio web:
Los certificados SSL llevan varios certificados intermedios que aumentan el volumen de datos durante el protocolo de enlace.
El rendimiento de OCSP y CRL tampoco se corrige ya que un sitio web tarda 1/3 de segundo en responder a una solicitud de OCSP y establecer una conexión.
Recomendaciones para conexiones HTTPS rápidas:
La utilización de recursos de la CPU se puede mitigar compactando el contenido textual o actualizando el proceso actual para manejar la tarea de cifrado.
Debe asegurarse de que todo el contenido de la página se recupere a través de HTTPS.
tomar ayuda deSPDY- un protocolo de red de código abierto de Google que minimiza el tiempo de carga de la página web.
Por parte de la autoridad certificadora, las CA puedenreducir el tiempo de respuesta de OCSP y CRLde 300 ms a 100 ms (milisegundos).
La CA puede reducir el tamaño de la cadena intermedia en los certificados SSL, ya que consume bytes y tiempo adicionales.