Blog

Configuração e Erros do Java

O primeiro ponto a ser observado é que a versão do Java deve ser 1.8 mais recente (final acima de 300) ou Java Zulu 1.7 ou Zulu 1.8, veja no tópico “Configurando o Java do Tomcat/Webrun” como configurar a versão do Java.

Os erros mais comuns são:

  • Erro de protocolo não suportado;
  • Erro de tamanho da mensagem de Handshake.

Possíveis soluções para essas duas situações são apresentadas a seguir. Vale ressaltar que as instruções aqui descritas são mera cortesia, use por conta e risco.

IMPORTANTE: O suporte ao Java, instalação, configuração, atualização… Não faz parte do suporte às APIs, se necessário solicite suporte adicional. Os custos e disponibilidade de agenda desse serviço deve ser verificado no momento da contratação.

Erro de protocolo não suportado

Além disso, você deve observar a seguinte configuração quando aparecer um dos erros a seguir:

  • javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
  • javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
  • Connection reset

Abra o arquivo java.security ([pasta do Java]\jre\lib\security\java.security ) no bloco de notas ou similar. Localize e comente (adicionando # no inicio da linha) as 3 linhas a seguir:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize lessThan 1024, EC keySize lessThan 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves

Salve o arquivo e reinicie o Tomcat ou a API no Agente para efetivar a alteração.

Observação: No Linux, a depender da distribuição, esta mesma configuração deve ser feitas em arquivos adicionais no ‘/etc/…’, por exemplo no Red Hat.

Referências

Essas instruções foram tiradas do seguinte vídeo (English):


Erro de tamanho da mensagem de Handshake

O servidor usa criptografia que pode exigir configuração adicional no Java do Webrun/Tomcat. O erro impede a conexão/comunicação e nos logs é retratado com a mensagem:

javax.net.ssl.SSLProtocolException: The size of the handshake message (X) exceeds the maximum allowed size (Y) 

Para efetuar a configuração basta adicionar o parâmetro “jdk.tls.maxHandshakeMessageSize” com o valor “130702” na inicialização da JVM. Ficando a linha completa assim:

 -Djdk.tls.maxHandshakeMessageSize=130702  

Esta configuração é adicionada no final das demais, conforme apontado na imagem a seguir:

Referência


SHA1 desabilitado

Alguns métodos de assinatura utilizam o algoritmo SHA1 que é atualmente considerado inseguro. Gerando um erro similar ao seguinte:

It is forbidden to use algorithm http://www.w3.org/2000/09/xmldsig#rsa-sha1 when secure validation is enabled

Para contornar você deve desativar essa restrição configurando o “org.jcp.xml.dsig.secureValidation” ou “jdk.xml.dsig.secureValidationPolicy” no java.security de acordo com a documentação da JVM em uso.

https://docs.oracle.com/javase/8/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html#xmlsig-secure-validation-mode

https://bugs.openjdk.org/browse/JDK-8260154