apache2 - SSLSessionCache wird ausgeführt, funktioniert aber nicht


8

Ich führe eine Debian Squeeze-Standard-Apache-Installation (2.2) aus und verwende SSLClientCertificates, um Benutzer zu autorisieren. Dies funktioniert soweit gut.

Wir bemerkten jedoch eine Verlangsamung einiger paralleler Anfragen und versuchten zu überprüfen, ob meine SSLSessionCachefunktioniert.

Also habe ich meinen localhost / server-Status überprüft und er lautet wie folgt:

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

Scheint zu laufen, aber unabhängig von der von mir gestellten SSL-Anforderung bleiben alle Zähler auf 0, sodass keine Sitzungen zwischengespeichert werden.

Ich habe versucht KeepAlive Offfestzulegen, damit jede Anforderung eine neue SSL-Verbindung herstellt, aber ich sehe immer noch keine Nummern in meinem SSLSessionCacheStatus.

Dies ist meine SSLSessionCache-Konfiguration von Standard-Debian mods-enabled/ssl.conf:

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

In meiner ${APACHE_RUN_DIR}Datei sehe ich überhaupt keine Dateien, keine ssl_mutex- und keine ssl_cache-Datei. Wenn ich meine wechseln SSLSessionCachezu

SSLSessionCache         dbm:${APACHE_RUN_DIR}/ssl_scache

Ich kann eine Datei in diesem Verzeichnis sehen, aber alle Statusnummern sind immer noch Null.

Ich habe versucht, LogLevel auf Debug zu setzen. Die einzigen Nachrichten, die ich über den SSL-Cache erhalte, sind:

$ 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

(Datum aus Gründen der Lesbarkeit entfernt, IP aus Datenschutzgründen ersetzt)

Also hier sind meine Fragen:

  1. Ist es richtig, keine Dateien für Mutex und SessionCache im angegebenen Verzeichnis zu haben?
  2. Wenn ja, wie kann ich beweisen, dass mein SessionCache funktioniert?

Antworten:


2

Ich bin mit Debian Squeeze nicht vertraut, aber hier sind einige Dinge, die Sie ausprobieren sollten:

Versuchen Sie, eine Verbindung mit openssl mit dem reconnectFlag herzustellen, das dieselbe Sitzung fünfmal verwendet :

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

und sehen, was Sie bekommen. Suchen Sie nach Session-ID& "Wiederverwendet".

Andere Dinge, die ausgeschlossen werden sollten:

  • Ein Schuss in die Dunkelheit, aber können Sie ihn durch ${APACHE_RUN_DIR}den tatsächlichen Pfad ersetzen und sehen, ob das hilft ...?
  • Schließen Sie Schreibberechtigungen (unwahrscheinlich, aber immer noch) für die oben genannten ssl_*Dateien durch den Benutzer aus, der Apache ausführt.

Wie bereits erwähnt, schreibt Apache eine Datei in das Verzeichnis, wenn ich dbm: als sessionCache verwende. $ {APACHE_RUN_DIR} und Schreibberechtigungen sollten also nicht das Problem sein. Ich kann es nicht mit openssl testen, da ich ein pcks # 11-Token für mein Client-Zertifikat verwende. Ich kann es nicht dazu bringen, mit openssl in der Befehlszeile zu arbeiten
Janning

Ich habe das gleiche Problem auf einem Windows-Computer. Ich habe versucht, wie vorgeschlagen eine Verbindung über openssl herzustellen, und sehe tatsächlich, dass für alle erneuten Verbindungen dieselbe Sitzungs-ID verwendet wird. Es heißt auch: "Wiederverwendet, TLSv1 / SSLv3" am Anfang. Dies geschieht jedoch sogar, wenn ich die SSLSessionCache-Zeile aus meiner Apache-Konfiguration entferne. Irgendwelche Ideen, was das bedeutet?
Lex82

Hat jemand vor einem Jahr eine Lösung dafür gefunden?
Codenamezero

0

Ich stehe vor einem ähnlichen Problem.

Für mich beim Ausführen des angegebenen Befehls. Ich habe einen Fehler "Unerwartete Nachricht" erhalten, wenn versucht wird, die Verbindung wiederherzustellen.

Wenn dieser Befehl jedoch auf dem Server ausgeführt wird, funktioniert er ordnungsgemäß. Die Sitzung wird wiederverwendet.

Zur Zeit habe ich keine Lösung dafür


0

Das Mounten von tmpfs auf / dev / shm und das Ersetzen von $ {APACHE_RUN_DIR} durch / dev / shm / apache wurde für mich behoben:

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

das hat auch bei mir nicht funktioniert.
Codenamezero
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.