Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Erro de Certificado "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException"

Bom dia !! Pessoal, estou tomando o seguinte erro no exercicio da aula 5 : "Java: trabalhando com lambdas, streams e Spring Framework", onde estou tentando consumir uma api : https://parallelum.com.br/fipe/api/v1/carros/marcas conforme as orientações da aula.

Ja fiz a importação do certificado, porém sigo tomando o erro:

2024-05-17T11:46:25.620-03:00 INFO 13532 --- [TabelaFipe] [ main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2024-05-17T11:46:25.643-03:00 ERROR 13532 --- [TabelaFipe] [ main] o.s.boot.SpringApplication : Application run failed

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at br.com.alura.TabelaFipe.service.ConsumoApi.obterDados(ConsumoApi.java:21) ~[classes/:na] at br.com.alura.TabelaFipe.principal.Principal.exibeMenu(Principal.java:36) ~[classes/:na] at br.com.alura.TabelaFipe.TabelaFipeApplication.run(TabelaFipeApplication.java:19) ~[classes/:na] at org.springframework.boot.SpringApplication.lambda$callRunner$5(SpringApplication.java:790) ~[spring-boot-3.2.5.jar:3.2.5] at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.6.jar:6.1.6] at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.6.jar:6.1.6] at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.6.jar:6.1.6] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:798) ~[spring-boot-3.2.5.jar:3.2.5] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:789) ~[spring-boot-3.2.5.jar:3.2.5] at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:774) ~[spring-boot-3.2.5.jar:3.2.5] at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[na:na] at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[na:na] at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na] at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:774) ~[spring-boot-3.2.5.jar:3.2.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[spring-boot-3.2.5.jar:3.2.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.5.jar:3.2.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.5.jar:3.2.5] at br.com.alura.TabelaFipe.TabelaFipeApplication.main(TabelaFipeApplication.java:12) ~[classes/:na] Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:578) ~[java.net.http:na] at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:123) ~[java.net.http:na] at br.com.alura.TabelaFipe.service.ConsumoApi.obterDados(ConsumoApi.java:19) ~[classes/:na] ... 22 common frames omitted Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Alguma orientação sobre o assunto??, desde já Obrigado!!
3 respostas
solução!

Oii, Fernando, tudo bem?

O erro PKIX path building failed indica que o Java não conseguiu validar o certificado SSL do servidor ao qual você está tentando se conectar.

Como você mencionou que já fez a importação do certificado, há alguns pontos que posso te recomendar para prosseguir, como:

  • Verificar se o certificado foi importado da maneira certa para o keystore correto: veja se o certificado foi adicionado ao keystore que o Java está usando por padrão. Você pode verificar isso com o comando:
     keytool -list -keystore path_to_your_keystore

Se o certificado não estiver lá, você precisará importar novamente. Aqui está um exemplo de como fazer isso:

     keytool -import -alias "AliasDoCertificado" -file caminho_para_o_certificado.cer -keystore path_to_your_keystore
  • Configurar o keystore e o truststore em sua aplicação: com o Spring Boot, você pode configurar o keystore e o truststore diretamente no application.properties ou application.yml:
     server.ssl.key-store=classpath:path_to_your_keystore.jks
     server.ssl.key-store-password=your_keystore_password
     server.ssl.trust-store=classpath:path_to_your_truststore.jks
     server.ssl.trust-store-password=your_truststore_password
  • Desabilitar a verificação de certificado (não recomendado para produção): como uma medida temporária para testar se o problema está realmente no certificado, você pode tentar desabilitar a verificação de certificados. Isso pode ser feito configurando o cliente HTTP para não verificar o certificado:
     HttpClient client = HttpClient.newBuilder()
         .sslContext(SSLContext.getInstance("TLS"))
         .build();
  • Verificar a data e hora do sistema: é necessário que a data e hora do seu sistema estejam corretas. Uma data/hora incorreta pode causar falhas na validação do certificado SSL.

Se outra dúvida surgir, estamos aqui.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Optei pela opção de desconsiderar a validação do Certificado, por se tratar de um exercicio. agora estou com outro erro:

segue abaixo o exemplo do código e do erro. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue toda a Classe "ConsumoApi"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade