jun
15
2015

Integração com o Invoicy via Java

15 de junho de 2015

Índice

-

Olá,

Se o seu ERP utiliza a linguagem Java e está integrando com o InvoiCy leia este artigo.

A comunicação com o Web Service do InvoiCy se dá através de uma comunicação segura, dependendo de como a integração foi desenvolvida pode retornar o seguinte erro ao comunicar com o InvoiCy em produção:

Warning: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Warning: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Warning: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHands
hakeException: sun.security.validator.ValidatorException: PKIX path building fai
led: sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
No content received
Exception in thread “main” org.eclipse.swt.SWTException: Failed to execute runna
ble (java.lang.RuntimeException: Connection has been shutdown: javax.net.ssl.SSL
HandshakeException: sun.security.validator.ValidatorException: PKIX path buildin
g failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target(-10001))

Alguns parceiros disponibilizaram a solução técnica a seguir para resolver este erro.

Solução para quem desenvolve em Genexus compilando a aplicação em Java:

1. Passo – Criar keystore

Estando na pasta BIN do JRE, digitar o seguinte comando “keytool -genkey -keystore c:\keystore.jks” e pressionar a tecla “enter”, será solicitada a inserção da senha do armazenamento da chave que deve ser: “qualquer_senha”, após pressionar “enter” e confirmar a senha será solicitado para redigitar, é só digitar novamente: “senha_escolhida” e pressionar “enter”, responder as perguntas como informado abaixo:

Após todos os dados informados, será solicitado que você informe a senha de armazenamento novamente “senha_escolhida” e então confirme a senha “senha_escolhida” e pronto, keystore criado.

2. Passo – Assinar keystore com o certificado

Tendo o certificado digital da Migrate salvo em seu computador, assine o keystore com o certificado digital, conforme exemplo abaixo:

keytool -import -trustcacerts -alias <alias> -file <file> -keystore <keystore>

Ex: keytool -import -trustcacerts -alias nfse -file c:\-.migrate.info/desenvolvedores/web/.crt -keystore c:\keystore.jks

Você terá o keystore assinado com o certificado digital.

3. Passo – Iniciar a aplicação JAVA vinculando ao keystore

Inicialize a aplicação JAVA, adicionando o keystore com o comando:

– Djavax.net.ssl.trustStore=”CAMINHO_CERTIFICADO”

– Djavax.net.ssl.trustStorePassword=SENHA, conforme exemplo abaixo:

Java -Djavax.net.ssl.trustStore=” c:\keystore.jks “

-Djavax.net.ssl.trustStorePassword=senha123 –cp gxclassr.zip;swt.jar;. umain

  • Solução para quem desenvolve em Java:

Segue abaixo passos para assinar digitalmente os jars com o certificado da Migrate.
O comando keytool deve ser usado dentro da pasta “bin” da “jre”.

1. Passo – Criar keystore

Digitar o seguinte comando:

keytool -genkey -keystore <CAMINHO>\<NOME_KEYSTORE>” e pressionar a tecla “enter”, será solicitada a inserção da senha do armazenamento da chave que deve ser: “qualquer_senha”, após pressionar “enter” e confirmar a senha será solicitado para redigitar, é só digitar novamente: “senha_escolhida” e pressionar “enter”, responder as perguntas como informado abaixo:

Ex:keytool -genkey -keystore c:\pastax.gerenciador.keystore
Qual é o seu nome e o seu sobrenome?
Desenvolvimento

Qual é o nome da sua unidade organizacional?
Desenvolvimento

Qual é o nome da sua empresa?
EmpresaX

Qual é o nome da sua cidade ou localidade?
Estado

Qual é o nome do seu estado ou município?
Cidade

Quais são as duas letras do código do país desta unidade?
UF

Após todos os dados informados, será solicitado que você informe a senha de armazenamento novamente “senha_escolhida” e então confirme a senha “senha_escolhida” e pronto, keystore criado.

2. Passo – Assinar keystore com o certificado

keytool -import -trustcacerts -alias <alias> -file <file> -keystore <keystore>

Ex: keytool -import -trustcacerts -alias nfse -file c:\-.migrate.info/desenvolvedores/web/.crt -keystore c:\pastax.gerenciador.keystore

Você terá o keystore assinado com o certificado digital.

3. Passo – Assinar os jars da aplicação

Assinar todos os Jars até os de dentro da lib com o certificado.

jarsigner -keystore “C:\pastax.gerenciador.keystore”

“C:\pastax.gerenciador_lib\axis.jar” nfse

Será solicitada a senha de armazenamento criada no keystore.

Pronto, arquivo de certificado criado, jars assinados.

4. Passo – Dentro da aplicação

Nas classes de controle, que instância as conexões com os webservices, é necessário setar as seguintes propriedades.

public static final String TRUSTSTORE = “javax.net.ssl.trustStore”;
public static final String TRUSTSTOREPASSWORD = “javax.net.ssl.trustStorePassword”;
public static final String NOMEARQUIVOCHAVE = “pastax.gerenciador.keystore”;
public static final String SENHAARQUIVOCHAVE = “senhaA”;

System.setProperty(TRUSTSTORE, <CAMINHO DO KEYSTORE>);
System.setProperty(TRUSTSTOREPASSWORD, SENHAARQUIVOCHAVE);