apache2 - SSLSessionCache 正在运行但不起作用

apache2 - SSLSessionCache 正在运行但不起作用

我运行 debian squeeze 标准 Apache 安装 (2.2),并使用 SSLClientCertificates 来授权用户。到目前为止,一切正常。

但是我们注意到一些并行请求的速度变慢了,并尝试检查我的是否SSLSessionCache正常工作。

因此我检查了我的本地主机/服务器状态,它显示如下:

SSL/TLS Session Cache Status:
cache type: SHMCB, shared memory: 512000 bytes, current sessions: 0
subcaches: 32, indexes per subcache: 133
index usage: 0%, cache usage: 0%
total sessions stored since starting: 0
total sessions expired since starting: 0
total (pre-expiry) sessions scrolled out of the cache: 0
total retrieves since starting: 0 hit, 0 miss
total removes since starting: 0 hit, 0 miss

似乎正在运行,但无论我发出什么 SSL 请求,所有计数器都保持在 0,因此没有会​​话被缓存。

我尝试设置KeepAlive Off,让每个请求建立一个新的 SSL 连接,但我仍然看不到SSLSessionCache状态中增加的数字。

这是我的来自标准 Debian 的 SSLSessionCache 配置mods-enabled/ssl.conf

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

在我的 ssl_mutex 中${APACHE_RUN_DIR}我看不到任何文件,没有 ssl_cache 文件。当我将我的 ssl_mutex 切换SSLSessionCache

SSLSessionCache         dbm:${APACHE_RUN_DIR}/ssl_scache

我可以在该目录中看到一个文件,但是所有状态号仍然为零。

我尝试将 LogLevel 设置为调试。我收到的有关 SSL 缓存的唯一消息是:

$ grep cache /var/log/apache2/error.log

ssl_scache_shmcb.c(253): shmcb_init allocated 512000 bytes of shared memory
ssl_scache_shmcb.c(272): for 511920 bytes (512000 including header), recommending 32 subcaches, 133 indexes each
ssl_scache_shmcb.c(306): shmcb_init_memory choices follow
ssl_scache_shmcb.c(308): subcache_num = 32
ssl_scache_shmcb.c(310): subcache_size = 15992
ssl_scache_shmcb.c(312): subcache_data_offset = 3208
ssl_scache_shmcb.c(314): subcache_data_size = 12784
ssl_scache_shmcb.c(316): index_num = 133
Shared memory session cache initialised
ssl_scache_shmcb.c(452): [client xyz] inside shmcb_status
ssl_scache_shmcb.c(512): [client xyz] leaving shmcb_status

(为方便阅读,删除了日期和日志级别,为保护隐私,替换了 IP)

我的问题是:

  1. 在给定的目录中没有 mutex 和 sessionCache 文件,这是正确的吗?
  2. 如果是,如何证明我的 SessionCache 正在正常工作?

答案1

我不熟悉 Debian Squeeze,但这里有一些可以尝试的东西:

尝试使用 openssl 和reconnect使用相同标志进行连接会话 5 次

openssl s_client -connect your.server.com:443 -state  -reconnect

看看你得到了什么。寻找Session-ID&“Reused”。

其他需要排除的事项:

  • 这是一个盲目的尝试,但是您可以${APACHE_RUN_DIR}用实际路径替换它并看看是否有帮助……?
  • 排除ssl_*运行 apache 的用户对上面提到的文件的写权限(不太可能,但仍然如此)。

答案2

在 /dev/shm 上安装 tmpfs 并将 ${APACHE_RUN_DIR} 替换为 /dev/shm/apache 为我解决了这个问题:

grep shm /etc/apache2/mods-enabled/ssl.conf
#SSLSessionCache        shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
SSLSessionCache        shmcb:/dev/shm/apache_ssl_scache(512000)

答案3

我遇到了类似的问题。

对我来说,当运行给定的命令时。当它尝试重新连接时,我收到“意外消息”错误。

但是在服务器上运行时,此命令可以正常工作,并且会话被重用。

当时,我对此没有解决办法

相关内容