我们有一台在Tomcat上运行Java Servlet的Windows服务器,其中SSL设置已经由一个受信任的根组成,该根为当前连接提供公钥,并为连接到另一台服务器提供导入的公共SSL密钥。
我们现在需要与另一台新服务器建立新的SSL连接。我们是否使用当前密钥库并在其中为此新的附加连接设置另一个受信任的根?或者我们是否必须为新连接的新受信任根设置第二个密钥库?
提前致谢
此致
AJFarroll
答案 0 :(得分:0)
我假设您正在讨论使用客户端证书身份验证。
您不一定要拥有多个密钥库。
该声明中的警告是,如果颁发客户端证书的CA与颁发服务器证书的颁发者相同,则客户端解析机制将难以确定要使用的客户端证书。
您很可能需要扩展javax.net.ssl.X509ExtendedKeyManager,以便能够选择适当的证书别名。
您需要覆盖方法String chooseClientAlias(String [] keyType,Principal [] issuers,Socket socket)。传递的套接字很可能是javax.net.ssl.SSLSocket的实现。然后,您可以使用javax.net.ssl.SSLSocket.getSession()从SSLSocket获取javax.net.ssl.SSLSession。从那里你可以收集你所连接的同伴,并在你的实现中确定适当的证书。