apache2 - SSLSessionCache 正在运行但不工作

Jan*_*ing 9 ssl cache session apache-2.2

我运行 debian 挤压标准 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
Run Code Online (Sandbox Code Playgroud)

似乎正在运行,但无论我发出什么 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
Run Code Online (Sandbox Code Playgroud)

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

SSLSessionCache         dbm:${APACHE_RUN_DIR}/ssl_scache
Run Code Online (Sandbox Code Playgroud)

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

我试图将 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
Run Code Online (Sandbox Code Playgroud)

(删除日期日志级别以提高可读性,替换 IP 以确保隐私)

所以这里是我的问题:

  1. 在给定目录中没有互斥锁和 sessionCache 文件是否正确?
  2. 如果是,如何证明我的 SessionCache 正在工作?

KM.*_*KM. 2

我不熟悉 Debian Squeeze,但可以尝试以下方法:

尝试使用 openssl 进行连接,并reconnect使用相同会话 5 次的标志:

openssl s_client -connect your.server.com:443 -state  -reconnect
Run Code Online (Sandbox Code Playgroud)

看看你会得到什么。寻找Session-ID&“重复使用”。

其他需要排除的事情:

  • 黑暗中的一枪,但你可以替换${APACHE_RUN_DIR}为实际路径,看看是否有帮助......?
  • 排除ssl_*运行 apache 的用户对上面记下的文件的写入权限(不太可能,但仍然如此)。