apache2-SSLSessionCache运行但无法正常工作


8

我运行了一个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)

所以这是我的问题:

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

Answers:


2

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

尝试使用带有5次reconnect使用同一会话的标志的openssl连接:

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

看看你得到什么。查找Session-ID并“重用”。

其他要排除的内容:

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

如前所述,当我使用dbm:作为sessionCache时,apache将文件写入目录。因此,$ {APACHE_RUN_DIR}和写入权限不是问题。我无法使用openssl对其进行测试,因为我为客户端证书使用了pcks#11令牌,无法使用openssl在命令行上使用它
Janning 2012年

我在Windows机器上有同样的问题。我尝试按照建议通过openssl连接,实际上我看到所有重新连接都使用相同的会话ID。它还在开头说:“重用的TLSv1 / SSLv3”。但是,当我从apache配置中删除SSLSessionCache行时,甚至会发生这种情况。任何想法,这意味着什么?
lex82

已经一年了,有人找到解决方案吗?
codenamezero

0

我正面临类似的问题。

对我来说,运行给定命令时。尝试重新连接时出现“意外消息”错误。

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

当时,我对此没有解决方案


0

在/ dev / shm上挂载tmpfs并用/ dev / shm / apache代替$ {APACHE_RUN_DIR}来修复它:

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

那对我也不起作用。
codenamezero
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.