Heim >Java >javaLernprogramm >Warum schlägt mein Java-SSL-Handshake fehl, wenn der Server ein von einer anderen Zertifizierungsstelle signiertes Client-Zertifikat anfordert?
Auslassen des Client-Zertifikats beim Java SSL-Handshake
Das Verhalten von Java bei SSL-Handshakes kann manchmal dazu führen, dass das Client-Zertifikat weggelassen wird, was zu einem Handshake führt Misserfolge. Dieses Problem tritt auf, wenn der Server ein von einer bestimmten Zertifizierungsstelle (in diesem Fall „RootCA“) signiertes Client-Zertifikat anfordert und Java im Keystore nur ein von einer untergeordneten Zertifizierungsstelle („SubCA“) signiertes Client-Zertifikat findet.
Überlegungen zur Keystore-Konfiguration:
Überlegungen zur Serverkonfiguration:
Workaround-Lösung:
Um dieses Problem zu beheben, muss das Client-Zertifikat verwendet werden und seine Zertifikatskette (einschließlich des „SubCA“-Zertifikats) sollte in einer einzigen Datei (z. B. bundle.pem) zusammengefasst werden. Diese gebündelte PEM-Datei kann dann mithilfe von keytool -importcert -keystore store.jks -alias myalias -file bundle.pem in den Keystore-Alias importiert werden, der den privaten Schlüssel des Clients enthält. Dadurch erkennt Java die komplette Zertifikatskette und sendet beim SSL-Handshake das entsprechende Zertifikat.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein Java-SSL-Handshake fehl, wenn der Server ein von einer anderen Zertifizierungsstelle signiertes Client-Zertifikat anfordert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!