Certificados Digitais - NFe

Cara…

isso me acontece quando ele não consegue encontrar os arquivos de certificado e JKS… dá uma revisada se está tudo certo.
Pra ter certeza… pode tentar criar um new File(path) para ver se tu não recebe um FileNotFoundException.

No mais… tá tudo igual o meu código que está funcionando.

Igor, acho que acabei de conseguir resolver o problema, entrei no site do ICP-Brasil e baixei o https://www.icpbrasil.gov.br/CertificadoACRaiz.crt e gerei meu .jks com o comando: “keytool -import -alias nfe -keystore nfe1.jks -file c:\CertificadoACRaiz.cer” ai agora a aplicação abaixo esta retornando a mensagem:

Verificado status…
Criou hService
Criou port

<?xml version="1.0" encoding="UTF-8"?> 242 Rejeicao: Cabecalho - Falha no Schema XML verificou status

vc já teve problema com esse tipo de mensagem de cabeçalho ??

Programa:
public class StatusNFE {

public static void main(String[] args) {
	// TODO Auto-generated method stub

	System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
	Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

	System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
	System.setProperty("javax.net.ssl.keyStore", "c:\\NF-e CERTIFICADO.pfx"); // Arquivo Original
	System.setProperty("javax.net.ssl.keyStorePassword", "xxxx");

	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore","c:\\nfe1.jks");

	System.out.println("Verificado status...");

	NfeStatusServico_Service hService = new NfeStatusServico_ServiceLocator();
	System.out.println("Criou hService");
	try {
		NfeStatusServico_PortType port = hService.getNfeStatusServico();
		System.out.println("Criou port");
		try {
			System.out.println(port.nfeStatusServicoNF("1.2", "STATUS"));
			System.out.println("verificou status");
		} catch (RemoteException e) {
			System.out.println("-------------------------------------");
			System.out.println(e.getMessage());
			System.out.println("-------------------------------------");
			e.printStackTrace();
		}

	} catch (ServiceException e1) {
		e1.printStackTrace();
	}
}

}

Cara… ele está reclamando que tu mandou parâmetros errados, fora dos padrões estabelecidos… isto é, não é um XML formatado segundo o manual.

Dá uma olhada no Manual item 4.6.1
http://www.nfe.fazenda.gov.br/portal/docs/Manual_de_Integracao_Contribuinte_versao_204_2007_12_26.pdf

Igor, como vc esta fazendo p/ gerar o XML para consulta do status do serviço ? vc está gerando eles via código usando DOM ?

Boa tarde a todos,

 Já consegui efetuar a conexão com o Web Service da NFe e verificar o status do serviço, agora estou tentando assinar um XML mas não estou conseguindo, alguem já conseguiu assinar o XML da NFe ?, como funciona a parte do certificado ? achei um código no forum [url]http://www.guj.com.br/posts/list/83758.java[/url] mas nele tem uma codificação que não estou entendendo, a mesma esta abaixo:


String configName = “/token.cfg”;
Provider p = new sun.security.pkcs11.SunPKCS11(configName);
Security.addProvider§;
char[] pin = { ‘s’, ‘a’, ‘f’, ‘e’, ‘w’, ‘e’, ‘b’ };

No meu código de conexão com o web-server não tem nada de PKCS11, segue abaixo o código:
[b]
System.setProperty(“java.protocol.handler.pkgs”,“com.sun.net.ssl.internal.www.protocol”);
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS12”);
System.setProperty(“javax.net.ssl.keyStore”, verConf.getPathKeyPFX());
System.setProperty(“javax.net.ssl.keyStorePassword”, “xxxx”);

System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”,verConf.getPathKeyJKS());
[/b]

Sr. reinaldoaraujo

Esse codigo que você viu neste topico que mostrou é de meu colega juliano, exatamente da forma que conseguimos assinar o xml.
Hj este metodo esta assinando os xml dos clientes que temos em todo o pais. Todos os estados.

Da uma validada no teu certificado se vc esta com a chave privada do certificado caso contrario ira dar erro de assinatura.

Sds

Pessoal,

     Importei o WSDL de status de serviço do estado de Minas Gerais por exemplo no Netbeans, agora estou com uma dúvida como alterar o [b]wsdl:address[/b] para outro estado uma vez que nele já tem um valor fixo por exemplo: "https://nfe.fazenda.mg.gov.br/nfe/services/NfeConsulta", gostaria de mudar este valor em tempo de execução, alguem já passou por este tipo de problema e possa por favor me dar uma ajuda ?

Obrigado.

Primeiramente gostaria de parabenizar o pessoal que está ajudando toda a comunidade com a maior boa vontade.
Eu estou tentando fazer alguns testes de conexão com o WebService de MT, estou um pouco perdido na verdade.
Estou tentando me comunicar utilizando o exemplo dos amigos.

 System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
		 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

		 System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
		 System.setProperty("javax.net.ssl.keyStore", "C:/vale.pfx"); 
		 System.setProperty("javax.net.ssl.keyStorePassword", "xxx");

		 System.setProperty("javax.net.ssl.trustStoreType", "JKS");
		 System.setProperty("javax.net.ssl.trustStore","C:/nfe.jks");

		 System.out.println("Verificado status...");
		 
		NfeStatusServicoNF servico = new NfeStatusServicoNF();
		
		servico.setNfeCabecMsg("");
		servico.setNfeDadosMsg("");
		
		NfeStatusServicoNFResponse response;
		NfeStatusServicoStub stub = new NfeStatusServicoStub();
		response = stub.nfeStatusServicoNF(servico);
		System.out.println(response.getNfeStatusServicoNFResult());

Recebo a seguinte mensagem

Exception in thread "main" org.apache.axis2.AxisFault: Connection reset by peer: connect
	at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
	at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
	at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:364)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:208)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401)
	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
	at br.com.sensatta.ws.NfeStatusServicoStub.nfeStatusServicoNF(NfeStatusServicoStub.java:183)
	at br.com.sensatta.util.StatusNFE.main(StatusNFE.java:37)

Alguém poderia me ajudar por favor.

[ ]'s

nandobgi, vc esta usando qual IDE, Eclipse ou Netbeans ? não sei se é esse o problema, mas as minhas declarações de comunicação estão um pouco diferente.

fiz testes nas duas IDEs, e as declarações é um pouco diferente:

Eclipse:
NfeStatusServico_Service hService = new NfeStatusServico_ServiceLocator();
NfeStatusServico_PortType port = hService.getNfeStatusServico();
String retConsStatServ = port.nfeStatusServicoNF(XML de Cabeçalho, XML de Consulta Status);

Netbeans:
NfeStatusServico_Service srv = new NfeStatusServico_Service();
NfeStatusServico srvSend = srv.getNfeStatusServico();
String retConsStatServ = srvSend.nfeStatusServicoNF(XML de Cabeçalho, XML de Consulta Status);

reinaldoaraujo de que Estado é o WebService que você esta consumindo?
Será que pode haver diferenças nos métodos conforme o Estado?

Valeu

Estado de Minas, ainda não testei em outros estados, não tenho certeza se pode ter diferença.

Esse erro, connection reset by peer, significa que ele nao achou o web service ou vc estava desconectado da internet.

Pessoal

Preciso desenvolver um sistema de nota fiscal eeltronica para substituir o sitema que a empresa alugou, porem eu tenho um prazo de 5 meses para desenvolver este sistema para substituir o outro sistema.

Por onde devo começar, alguem pode me dar uma luz?

[quote=nandobgi]Primeiramente gostaria de parabenizar o pessoal que está ajudando toda a comunidade com a maior boa vontade.
Eu estou tentando fazer alguns testes de conexão com o WebService de MT, estou um pouco perdido na verdade.
Estou tentando me comunicar utilizando o exemplo dos amigos.

 System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
		 Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

		 System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
		 System.setProperty("javax.net.ssl.keyStore", "C:/vale.pfx"); 
		 System.setProperty("javax.net.ssl.keyStorePassword", "xxx");

		 System.setProperty("javax.net.ssl.trustStoreType", "JKS");
		 System.setProperty("javax.net.ssl.trustStore","C:/nfe.jks");

		 System.out.println("Verificado status...");
		 
		NfeStatusServicoNF servico = new NfeStatusServicoNF();
		
		servico.setNfeCabecMsg("");
		servico.setNfeDadosMsg("");
		
		NfeStatusServicoNFResponse response;
		NfeStatusServicoStub stub = new NfeStatusServicoStub();
		response = stub.nfeStatusServicoNF(servico);
		System.out.println(response.getNfeStatusServicoNFResult());

Recebo a seguinte mensagem

Exception in thread "main" org.apache.axis2.AxisFault: Connection reset by peer: connect
	at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
	at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
	at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:364)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:208)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401)
	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
	at br.com.sensatta.ws.NfeStatusServicoStub.nfeStatusServicoNF(NfeStatusServicoStub.java:183)
	at br.com.sensatta.util.StatusNFE.main(StatusNFE.java:37)

Alguém poderia me ajudar por favor.

[ ]'s
[/quote]

vc esta usando JAXB?
usei e nao gerou esse “NfeStatusServicoStub”

sabem se posso usar JAXB para consumir servicos de NFE?

Valeu

GRÁTIS é POUCO: http://www.gratisepouco.com.br

o certificado deve ser passado como Argumento na hora de rodar a classe ou direto no tom cat, no arquivo catalina.sh(.bat)

Estou vendo op pessoal falar em exportar a chave privada e tal… Mas e se a chave privada não for passível de exportação??? Alguém ja teve que lidar com isso??? Comsegui acessar o leitor de smartCard via API, porém preciso configurar um interceptor do CXF para trabalhar com pkcs#11… Alguém conseguiu?

[]´s

Uma pergunta antes de responder a sua, qual modelo de certificado vc esta usando ? A1, A3 ?

Boa tarde a todos,

Gostaria de saber como vcs fizeram para criar a classe: NfeStatusServico_Service.

muito obrigado.

SmartCard = A3!
pkcs#11 = A3

certo?

A pergunta é… Como algo tão utilizado e tão mal documentado como o WSS4J trabalha com A3 em pkcs11?