A validação de um certificado em java gera uma exceção - não é possível encontrar o caminho de certificado válido para o destino solicitado

Eu tenho um aplicativo da web que requer que um cliente envie seu certificado e o servidor tenha que validar o certificado (ou seja, veja se o emissor é um emissor válido e está presente no truststore do servidor). Aqui está o 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>

Mas eu recebo uma exceção:

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

NOTA :
Aqui, o certificado enviado pelo cliente é client.crt e o certificado usado para assinar o certificado client.crt é o ca.crt que está presente no keystore "trustedca". Então, por que está dando essa exceção?

questionAnswers(3)

yourAnswerToTheQuestion