La validación de un certificado en java genera una excepción: no se puede encontrar una ruta de certificado válida al destino solicitado

Tengo una aplicación web que requiere que un cliente envíe su certificado y el servidor tiene que validar el certificado (es decir, ver si el emisor es un emisor válido y está presente en el almacén de confianza del servidor). Aquí está el código:

<code>FileInputStream fin=new FileInputStream("C:/trustedca");
    KeyStore anchors = KeyStore.getInstance("JKS","SUN");
    anchors.load(fin, "server".toCharArray());
    X509CertSelector target = new X509CertSelector();
    FileInputStream fin1=new FileInputStream("C:/client.crt");
    CertificateFactory cf=CertificateFactory.getInstance("X.509");
    X509Certificate cert=null;
    while (fin1.available() > 0) 
    {
     System.out.println("in while---------");
     cert =(X509Certificate) cf.generateCertificate(fin1);
    }
    target.setCertificate(cert);
    PKIXBuilderParameters params = new PKIXBuilderParameters(anchors, target);

    CertPathBuilder builder = (CertPathBuilder) CertPathBuilder.getInstance("PKIX").build(params);
    PKIXCertPathBuilderResult r = (PKIXCertPathBuilderResult) builder.build((CertPathParameters)params);<br>
</code>

Pero me sale una excepción:

<code>sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid
 certification path to requested target<br>
</code>

NOTA :
Aquí el certificado enviado por el cliente es client.crt y el certificado utilizado para firmar el certificado de client.crt es el ca.crt que está presente en el almacén de claves "trustedca". Entonces, ¿por qué está dando esta excepción?

Respuestas a la pregunta(3)

Su respuesta a la pregunta