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. 与えられたディレクトリにミューテックスとセッションキャッシュのファイルがないことは正しいですか?
  2. はいの場合、SessionCacheが機能していることをどのように証明しますか?

回答:


2

私はDebian Squeezeに精通していませんが、ここで試してみてください:

reconnect同じセッションを5回使用するフラグ付きのopensslを使用して接続してみてください。

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

あなたが得るものを見てください。探しSession-ID&「再利用」。

除外すべき他の事柄:

  • 暗闇でのショットです${APACHE_RUN_DIR}が、実際のパスに置き換えて、それが役立つかどうかを確認できますか?
  • ssl_*apacheを実行しているユーザーが上記のメモしたファイルへの書き込み権限を(おそらくそうではないが)除外します。

前述のとおり、dbm:をsessionCacheとして使用すると、apacheがディレクトリにファイルを書き込みます。したがって、$ {APACHE_RUN_DIR}と書き込み権限は問題にはなりません。クライアント証明書にpcks#11トークンを使用しているため、opensslではテストできません。opensslを使用してコマンドラインで機能させることができません
Janning

Windowsマシンでも同じ問題があります。推奨されるようにopensslを介して接続しようとしましたが、実際にはすべての再接続に同じセッションIDが使用されていることがわかります。また、冒頭には「再利用、TLSv1 / SSLv3」とあります。ただし、これは、Apacheの構成からSSLSessionCache行を削除した場合にも発生します。これが何を意味するのか?
lex82

1年が経ちましたが、誰かがこれに対する解決策を見つけましたか?
codenamezero

0

同様の問題に直面しています。

与えられたコマンドを実行するときの私にとって。再接続しようとすると、「予期しないメッセージ」エラーが発生します。

ただし、サーバーで実行すると、このコマンドは正しく機能し、セッションが再利用されます。

当時、私にはこれに対する解決策がありません


0

tmpfsを/ dev / shmにマウントし、$ {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)

それも私にはうまくいきませんでした。
codenamezero
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.