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?