Identifique o certificado necessário (ausente) que está causando falha em um aplicativo Java

2

Estou usando o Intellij IDEA 15, um IDE baseado em Java. Ele permite que eu clique em um link em qualquer classe Java de código aberto no meu projeto e faça o download da fonte e da documentação da Internet. No entanto, esse recurso está falhando agora porque temos que passar por um servidor proxy, que substitui o certificado. Embora o sistema Windows em que eu esteja saiba sobre o certificado local, a VM Java que estou usando não sabe sobre ele, portanto, o processo de download falha com este erro:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

A solução parece ser exportar o certificado adequado do armazenamento de certificados da minha caixa do Windows e adicioná-lo ao armazenamento de certificados da JVM em /jre/lib/security/cacert , exceto que não tenho idéia de qual das dezenas de certificados no repositório do Windows está faltando.

Alguém pode sugerir um método de depuração para identificar qual certificado está faltando? No meu próprio código, eu definiria um ponto de interrupção usando o Intellij e verificaria os valores sendo passados, mas como o problema é dentro do Intellij , eu realmente não sei como chegar a esses valores.

Qualquer ajuda é apreciada, se isso precisar ser movido para uma comunidade StackExchange diferente, eu entendo.

    
por user1071914 10.02.2016 / 22:25

1 resposta

2

Os servidores proxy são sempre divertidos!

Ok. O truque quando se trata de rastrear problemas de cert é que o certificado raiz é o mais importante . O certificado raiz da cadeia de confiança é uma CA e, se o seu sistema confiar a CA, também confia em qualquer coisa que assine. Por outro lado, se a CA não for confiável, tudo o que ela assina é inválido.

Seu Windows está configurado para confiar na CA, provavelmente por cortesia do departamento de TI local. Java, no entanto, não é.

Portanto: você precisa obter a chave da CA que está gerando certificados no servidor proxy e inseri-la no armazenamento de chaves Java.

Provavelmente, você pode encontrar isso abrindo qualquer site seguro em qualquer navegador da Web, abrindo as propriedades da página e observando o certificado real. No Firefox, parece algo assim:

Vocêclicarianonívelsuperior,aquichamadode"COMODO ECC Certification Authority", exportaria e usaria o java keytool para instalá-lo como uma autoridade de certificação.

Nota: Na sua configuração, o nome será certamente diferente. É provável que não seja o nome de uma empresa conhecida por certificados como Comodo ou Verisign, será o nome de um fornecedor de equipamentos como Barracuda ou Bluecoat

Mais detalhes sobre o funcionamento de keytool no Windows são disponível aqui

    
por 10.02.2016 / 22:34