Erro interno

Bom dia a todos,

Estou com o erro abaixo e não sei o que pode ser. Alguém pode ajudar?

nested exception is: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Estou consumindo um web service com conexão segura (https), tenho o certificado válido e o CA (instituições certificadoras). A aplicação encontra o certificado e o arquivo, mas hora funciona ok, hora apresenta o erro acima sem ocorrer nenhuma alteração.

Obrigada.

Fala moça tudo bem?

Tem alguma função que precisa ser fechada?

dar um .close(); ?

ou o próprio Web Service do pessoal que te passou não tem essa funcionalidade para vc fechar a
sua conexão com o Web Service deles?

Espero ter ajudado.
abraços

O Web Service deles não tem essa funcionalidade para que eu possa fechar a minha conexão com o Web deles.

:frowning:

Eu não sei o que pode ser isso!

Você setou a propertie javax.net.ssl.trustStore com um arquivo contendo o certificado do servidor?
Se sim, verifique se o arquivo está “integro”:

keytool -v -list -keystore <arquivo>

Verifique também o arquivo $JAVA_HOME/jre/lib/security/cacerts está integro.

Os arquivos TrustStore e KeyStore estão integros.

A aplicação que faz o consumo deste web service, parte dela é desenvolvida no NetBeans e a outra parte a partir do Genexus, o código abaixo foi escrito em Genexus. Observe na linha 3 do código, esses parâmetros são:

&PathFinalTrustStore = diretório e nome do arquivo TrustStore.jks (CA)
&tspwd = Senha de acesso no TrustStore
&PathFinalKeyStore = diretório e nome do arquivo KeyStore.jks
&kspwd = Senha de acesso no KeyStore.jks

Java try
Java {
Java WSCST wscst = new WSCST([!&PathFinalTrustStore!],[!&tspwd!], [!&PathFinalKeyStore!],[!&kspwd!]);
Java [!&XMLSaida!] = wscst.consultarProduto([!&CODIGO_PRODUTO!], [!&TIPO_PRODUTO!]);
Java }
Java catch(javax.xml.rpc.ServiceException se)
Java {
&FlagErro = ‘SIM’
Java [!&ErroDetalhes!] = "ServiceException " + se.getLocalizedMessage();
Java System.out.println(se.getMessage());
Java }
Java catch(java.rmi.RemoteException re)
Java {
&FlagErro = ‘SIM’
Java [!&ErroDetalhes!] = "RemoteException " + re.getLocalizedMessage();
Java System.out.println(re.getMessage());
Java }
Java catch (Exception ioe)
Java {
&FlagErro = ‘SIM’
Java [!&ErroDetalhes!] = "IOException " + ioe.getLocalizedMessage();
Java System.out.println(ioe.getMessage());
Java }

&CONSULTA_PRODUTO.FromXml(&XMLSaida)

Não consegui entender porque hora funciona, hora não, se os arquivos estivessem com algum dano nunca poderia funcionar. :frowning:

Frase típica: “Estranho!!!” :slight_smile:

Você está acessando um único Web Service? No servidor está ativado a verificação de autencidade do client? O seu certificado e o certificado do servidor são certificados “autenticos” (assinados por uma CA oficial)?

Poste o certificado do servidor que você está acessando e o seu certificado para poder dar uma olhada.

Na verdade é um web service mas com métodos diferentes. O certificado cliente e servidor são iguais e são válidos, assinados por uma CA oficial.

Só não posso postar o certificado, por questões de segurança, pois pertence ao nosso cliente.

Quando ocorre este erro, a requisição nem chega no dominio do web service. Solicitei ao cliente que fizesse um rastreamento das requisições, e segundo o cliente não chegamos pingar no firewall dele, ou seja, este erro ocorre aqui (na máquina cliente). :frowning:

Poste a statcktrace completa para dar uma olhada.
Poste dados tecnicos sobre o certificado: algoritmo de assinatura, tamanho da chave, etc.
Qual versão de JVM você está usando? Está rodando em algum servidor de aplicação?

Servidor de aplicação: Apache TomCat 5.5.15
JVM 1.5.0_06-b05

Certificado:
algoritmo: sha1RSA
Chave: RSA(2048)
validade: sábado, 14 de fevereiro de 2009 15:58:00
Emissor: 0 = TCSTAUTH OU = Organizational CA

Chave: RSA 2048

E a stacktrace?

Tipicamente este erro é por não conseguir ler o arquivo de “trustCert” configurado. Como você citou que as vezes funciona e algumas vezes funciona, talvez fosse interessante investigar se não é problema de leitura do arquivo. O arquivo está local ou é acessado através de algum mecanismo de diretório remoto? Não está havendo problema de leitura de disco onde está o arquivo?
Chute: tente mudar o arquivo de lugar e veja se o erro persiste.

Eu desconfiei que poderia ser isso (não conseguir ler o arquivo de “trustCert” configurado), mas faço todo o controle de verificação de acesso ao arquivo. Este arquivo encontra-se sempre no servidor de aplicação, inicialmente este arquivo encontra-se no mesmo diretório das minhas classes, dentro do contexto do tomcat. Fiz uma alteração, retirei do contexto do tomcat e coloquei no diretorio raiz (root), mas não apresentou diferença alguma.

Algo que ainda não havia pensado é se esta ocorrendo erro de leitura no disco, vou solicitar ao pessoal de suporte que prepare um novo ambiente e vamos fazer teste.

Muito obrigada pela ajuda!

Olá,

No momento, nos dois servidores a aplicação está funcionando perfeitamente.

Vou executar testes periodicamente nos dois servidores durante esta semana para ver se ocorre novamente o erro.

TRUSTSTORE - CAMINHO : /usr/local/apache-tomcat-5.5.15/webapps/norsul/cagru.jks

KEYSTORE - CAMINHO : /usr/local/apache-tomcat-5.5.15/webapps/norsul/teste.jks

SENHA TRUSTSTORE : senha1

SENHA KEYSTORE : senha1

Resultado do teste de conexão : OK

Obrigada!

Como este problema foi resolvido?

Estou com este mesmo problema no desenvolvimento local aqui…

O que pode ser?

Consegui resolver o problema…

Por algum motivo apesar de não apresentar erro na adição do certificado, creio que o mesmo não estava sendo localizado. Refiz todo o processo de instalação e exportação do certificado até a inclusão…Após todo o processo refeito funcionou…

Agora estou com problema de formatação de XML, porém creio que seja porque estava usando a versão 1.10, vou fazer as mudanças para a versão 2.00 e posto o resultado.