Client Certificate Omission in Java SSL Handshake
Java's behavior during SSL handshakes can sometimes result in the omission of the client certificate, leading to handshake failures. This issue arises when the server requests a client certificate signed by a certain CA (in this case, "RootCA"), and Java only finds a client certificate signed by a subordinate CA ("SubCA") in the Keystore.
Keystore Configuration Considerations:
Server Configuration Considerations:
Workaround Solution:
To rectify this issue, the client certificate and its certificate chain (including the "SubCA" certificate) should be combined into a single file (e.g., bundle.pem). This bundled PEM file can then be imported into the Keystore alias that holds the client's private key using keytool -importcert -keystore store.jks -alias myalias -file bundle.pem. By doing this, Java will recognize the complete certificate chain and send the appropriate certificate during the SSL handshake.
The above is the detailed content of Why Does My Java SSL Handshake Fail When the Server Requests a Client Certificate Signed by a Different CA?. For more information, please follow other related articles on the PHP Chinese website!