Tenho um cliente da Bahia com um certificado A1 da AC Caixa.
No envio da nota o seguinte erro é apresentado:
Failed to access the WSDL at: https://hnfe.sefaz.ba.gov.br/webservices/nfe/NfeRecepcao.asmx?WSDL. It failed with:
Server returned HTTP response code: 403 for URL: https://hnfe.sefaz.ba.gov.br/webservices/nfe/NfeRecepcao.asmx?WSDL.
STACKTRACE:
com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser - Linha -1
com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser - Linha -1
com.sun.xml.internal.ws.client.WSServiceDelegate - Linha -1
com.sun.xml.internal.ws.client.WSServiceDelegate - Linha -1
com.sun.xml.internal.ws.client.WSServiceDelegate - Linha -1
com.sun.xml.internal.ws.spi.ProviderImpl - Linha -1
javax.xml.ws.Service - Linha -1
notaeletronica.webservice.homologacao.sp.recepcao.NfeRecepcao - Linha 46
notaeletronica.servicos.EnviarNFe - Linha 154
faturamento.enviodenotafiscaleletronica.ThreadEnvioDeNotaEletronica - Linha 175
java.lang.Thread - Linha -1
Alguém sabe o que pode ser?
Detalhe que os certificados da Caixa não são considerados confiáveis. Será que o erro acontece por isso?
Já conferi várias vezes a cadeia de certificados e consigo enviar quando utilizo o emissor gratuito de nfe. Por isso acredito que não está faltando nenhum certificado.
Isso é erro do java de acesso a conecções SSL. Esse erro acontece quando o java tenta acessar webservices em .NET, adiciona nas tuas configurações de segurança esse metodo:
esta estratégia com System.setProperty não é tão boa porque configura a JVM inteira. Eu fiz um teste e a partir de uma Thread, esta mecânica também é propagada. Apesar disso, o JAX-WS não permite uma pré-configuração até você obter o port.
Aqui, o arquivo WSDL é lido localmente. Ele é obtido anteriormente, pode ser pelo navegador. Assim, dá tempo de configurar uma conexão SSL antes de chamar o primeiro método do stub.
o SSLFactory fica assim: É claro que precisa criar uma estratégia para passar os dados do keystore, mas serve só de exemplo:
Eu tentei remover o System.setProperty do meu codigo e implementar o SSLSocketFactory como seu exemplo mas não consegui fazer funcionar.
Outro exemplo que tentei foi implementar o ProtocolSocketFactory mas também não funcionou.
Estou utilizando a classe SOAPConnection para comunicação e esta não me dá muita opção para configuração.