Ein weiteres Legacy-Support-Problem hier!
Wir haben ein Server-Netzwerk mit mehreren Clients, in dem jede Komponente ein selbstsigniertes Zertifikat hat und dem Truststore des Servers/Clients hinzugefügt wird. Wir verwenden hier keine Zertifizierungsstelle.
Jetzt ist unser Problem, dass wir alle Zertifikate für bessere Sicherheit aktualisieren müssen. Die neuen Clients werden mit neueren Zertifikaten geliefert und sogar der Server wird neue Zertifikate haben.
Unser Problem ist, wie man mit den alten Clients umgeht. Schlüsseltresore unserer alten Kunden zu aktualisieren, ist der letzte Ausweg.SSL: Wie werden mehrere Clients mit separaten Schlüsseln behandelt, die sich mit demselben Port verbinden?
Dinge, die nicht funktionieren:
Hinzufügen sowohl die neuen und alten Zertifikate in Server-Vertrauens: Auch die Clients die Authentifizierung der Server und die Server-Zertifikat wird nicht in dem Client-Vertrauens vorhanden sein.
Neuen Port für die neuen Clients verwenden: Wir haben überlegt, neue Ports für neue Clients zu verwenden und alte Ports für alte Clients fortzusetzen, aber das Problem besteht darin, dass mehrere Anwendungen mit diesem Problem konfrontiert sind mehrere neue Ports, die nicht von anderen Produkten genutzt werden.
FWIW: Die Server sind in Java und die Kunden sind in C++
EDIT nach EJP Antwort
Ich bin wahrscheinlich eine sehr dumme Frage hier fragen, aber ich wollte nur sicher sein. Es gibt absolut keine Möglichkeit, den SSL-Kontext eines Sockets zu bearbeiten, sobald er gebunden ist. Richtig?
Können wir auch das Serverzertifikat auswählen, das während des Handshakes verwendet wird? Ich kenne chooseClientAlias()
und chooseServerAlias()
Methoden, aber hier wissen wir nicht, welches Zertifikat zu verwenden, bis der Client Hallo Nachricht gesendet wird.
Ich stimme Ihrem Punkt bei der Verwendung einer Zertifizierungsstelle zu. Ich habe die Frage mit einem weiteren Thread aktualisiert, der gerade diskutiert wird. Kannst du das auch beantworten? – Limit
Ich werde die chooseServerAlias () -Methode versuchen. Ich denke, das sollte unser Problem lösen. Verwenden Sie die alten Schlüssel für alte Agenten und neue Schlüssel für neue Server. Zumindest bis wir eine CA Architektur aufgebaut haben. – Limit