Apache SSL 握手缓慢

Apache SSL 握手缓慢

我正在运行在 Ubuntu 16.04.1 LTS 下运行的 Apache 2.4.18 服务器,仅安装了 PHP 7 和 Exim 4。

清晨时,SSL 握手速度极快,大约 200 毫秒,但随着时间的推移(大约 1 小时后)速度加快,达到 8 秒左右。如果我重新启动 Apache,SSL 速度会再次加快,但过一会儿又会变慢,回到 8 秒,有时甚至达到 30 秒。

我配置了 Apache ssh.conf (etc/apache2/mods-enabled) 如下:

    SSLRandomSeed startup builtin
    SSLRandomSeed startup file:/dev/urandom 512
    SSLRandomSeed connect builtin
    SSLRandomSeed connect file:/dev/urandom 512

    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl .crl

    SSLPassPhraseDialog  exec:/usr/share/apache2/ask-for-passphrase

    SSLSessionCache         shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
    SSLSessionCacheTimeout  300

    SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

    SSLHonorCipherOrder on
    SSLProtocol all -SSLv3

    SSLCompression off
    SSLSessionTickets off

    SSLUseStapling on
    SSLStaplingResponderTimeout 5
    SSLStaplingReturnResponderErrors off
    SSLStaplingCache shmcb:/var/run/ocsp(128000)

在 VirtualHost 设置中我设置了以下标题:

    Header always set Strict-Transport-Security "max-age=15768000"

服务器配置为:

  • CPU:英特尔至强 E5-2650L 1.80Ghz(4 核)
  • 内存:7.8 GB
  • 平均负载:0.50

使用 Apache 的服务器状态工具会出现此情况。

当 HTTPS 速度很快时(apache2 重启后,上午 11:00): SSL/TLS 会话缓存状态

当 HTTPS 较慢时: (上午 11:04): SSL/TLS 会话缓存状态

当我们从服务器迁移时,这种情况开始发生。没有请求新的证书,旧的 SSLCertificateFile、SSLCertificateChainFile 和 SSLCertificateKeyFile 仍在使用。

什么情况会导致它变慢以及我该如何解决它?

答案1

如果您的加密速度很慢,那么本文没有提到的一件事就是/dev/randomvs /dev/urandom/dev/random文件可能会因等待熵而阻塞,而编写不当的加密可能会反复出现。这在虚拟机中尤其明显,因为它们没有太多正常的熵生成硬件。如果您遇到这种情况,只需使用/dev/urandom

这是可能不会影响到您的事情之一,但如果影响到了您,那么这可能是一个真正的问题,而且如果不知道如何寻找的话很难进行诊断。

http://www.2uo.de/myths-about-urandom/

相关内容