クライアントの証明書がサーバーのトラストストアに存在しない場合でも、TLSサーバーはクライアントからの接続を受け入れます。どうして?TLSサーバーは、クライアントcttificateがサーバーtruststoreに存在しなくても、クライアントからの接続を受け入れますか?どうして?
サーバコード:
tlsContext = SSLContext.getInstance(SSL_PROTOCOL);
tlsContext.init(getMyKeyManagers(),null,null);
SSLServerSocketFactory fact = tlsContext.getServerSocketFactory();
tlsServerSock = (SSLServerSocket)fact.createServerSocket();
tlsServerSock.setNeedClientAuth(true);
tlsServerSock.setWantClientAuth(true);
tlsServerSock.bind(objSocketAddress);
と
サーバソケットコード上のクライアントコードリスニングを開始:
SSLContext tlsContext = SSLContext.getInstance(SSL_PROTOCOL);
tlsContext.init(getMyKeyManagers(), getMyTrustManagers(), null);
SSLSocketFactory fact = tlsContext.getSocketFactory();
socket = fact.createSocket();
socket.connect(objSocketAddress);
をコードは、サーバー側で追加なしTrustManagersがない描写として、まだクライアント認証があります成功した。なぜそうですか?
クライアント証明書は、自己署名されている場合にのみサーバートラストストアで必要です。 – EJP