0

クライアント証明書がサーバーのトラストストアに存在しない場合でも、TLS サーバーはクライアントからの接続を受け入れます。なんで?

サーバーコード:

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 はありませんが、クライアント認証は成功しています。どうしてですか?

4

2 に答える 2

-1

trustmananager がない場合、クライアント証明書は必要ありません。

もう 1 つの可能性は、クライアント証明書の発行者の 1 人がサーバーのトラストストアに存在することです。

于 2009-06-08T12:03:09.973 に答える