我运行了一个debian squeeze标准Apache安装(2.2),并使用SSLClientCertificates来授权用户。到目前为止,这个工作正常。
但是我们注意到一些并行请求的速度变慢,并尝试检查我SSLSessionCache
的工作是否正常。
所以我检查了我的localhost / server-status,它看起来像这样:
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
在我${APACHE_RUN_DIR}
看来,根本没有文件,没有ssl_mutex和ssl_cache文件。当我切换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)
所以这是我的问题:
- 在给定目录中没有用于互斥体和sessionCache的文件是否正确?
- 如果是,如何证明我的SessionCache是否正常工作?