2016-05-06 9 views
0

Ich habe einen Spring Boot (v1.3) -Webdienst, auf dem Tomcat 8 mit Endpunkten läuft, die mehrere Downstream-Dienste betreffen. Jeder nachgeschaltete Dienst benötigt Informationen im Zertifikat des Benutzers, das von der Zertifizierungsstelle dieses nachgeordneten Dienstes signiert wurde.Konfigurieren Sie Tomcat, um einen Unterzeichner einem anderen vorzuziehen ODER verwenden Sie unterschiedliche Zertifikate pro Endpunkt?

Ein Benutzer wird alle benötigten Zertifikate haben (ein Zertifikat für jede der erforderlichen CAs), aber der Dienst muss für jeden Endpunkt ein anderes Zertifikat erhalten. Gibt es eine Möglichkeit, dies zu tun (eine bestimmte oder alle Zertifikate aus dem Browser eines Benutzers erhalten)?

(Vielleicht etwas in Richtung der Tomcat SSLSessionManager (org.apache.tomcat.util.net.SSLSessionManager) in der entsprechenden Controller und ungültig die Sitzung/ca ... und fragen nach einem anderen ..)

Antwort

0

Es ist mir nicht klar, was Sie wollen: mehrere Tomcat-Endpunkte haben, mit denen sich der Benutzer verbinden kann, oder mehrere Endpunkte von Ihrem Tomcat anrufen.

Wenn dies der erstes ist, dann können Sie entweder:

  • mehr tomcat Anschlüsse erklären, jeder mit seinem eigenen Schlüsselspeicher
  • oder einen vorderen Server hinzufügen (wie Apache, Nginx, HAProxy usw.), die die SSL Teil gegeben einer angeforderten DNS wird behandeln

Wenn dies die zweite Lösung, die Sie benötigen, können Sie einen Schlüsselspeicher mit allen certificates.This haben Schlüsselspeicher der JVM durch die javax.ssl Eigenschaften registriert werden können. Weitere Informationen finden Sie unter java SSL and cert keystore

+0

Ich möchte verschiedene Zertifikate aus dem Browser des Benutzers basierend auf dem Endpunkt erhalten. Ich hoffe, verschiedene Konnektoren nicht zu erstellen, da ich nicht möchte, dass ein Benutzer andere Ports verwenden muss. – eze

+0

Dann ist die Verwendung einer Front eine einfache Möglichkeit, das zu tun :) –