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:
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>
Mas eu recebo uma exceção:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid
certification path to requested target<br>
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?