Assinaturas de arquivos xml da NFe

Fred, pareceu-me que o seu problema esta na montagem do ID da tag:

Note que em <infNFe Id=… tem a String “NFe” seguida da chave de acesso da NFe.
É esta tag que o processo de assinatura busca para assinar o xml da nota.
javax.xml.crypto.URIReferenceException deu a entender que nao encontrou a tag com
o Id especificado neste trecho de codigo:

String id = el.getAttribute(“Id”);
Ou entao esta faltando o caracter “#” aqui (erro mais provavel):
Reference ref = fac.newReference("#" + id, fac.newDigestMethod(
DigestMethod.SHA1, null), transformList, null, null);

Alencar

Pior é que tem.

<?xml version="1.0" encoding="utf-8" ?> 
- <enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10">
  <idLote>1</idLote> 
- <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
- <infNFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="NFexxxxxxxxxx..." versao="1.10">
- <ide>

Só falta assinar pra mim concluir aqui.

[quote=philler]Fred, pareceu-me que o seu problema esta na montagem do ID da tag:

Note que em <infNFe Id=… tem a String “NFe” seguida da chave de acesso da NFe.
É esta tag que o processo de assinatura busca para assinar o xml da nota.
javax.xml.crypto.URIReferenceException deu a entender que nao encontrou a tag com
o Id especificado neste trecho de codigo:

String id = el.getAttribute(“Id”);
Ou entao esta faltando o caracter “#” aqui (erro mais provavel):
Reference ref = fac.newReference("#" + id, fac.newDigestMethod(
DigestMethod.SHA1, null), transformList, null, null);

Alencar[/quote]

BINGOOO!! Era o # faltando mesmo, coloquei e assinou na hora!! Valeu mesmo, estes errinhos podem nos tomar dias de trabalho.

Mas o que seria o # afinal? É que realmente nao tive tempo pra estudar a coisa a fundo e entender o que cada coisa faz, é um projeto pessoal e só tenho tempo de fazer a noite, e o prazo é pra ontem como dizem.

Bom agora vou validar la no site do rs pra ver se assinou legal hehe, Valeu ae galera pela força.

Pessoal,

alguém está trabalhando com o token ePass2000? Como eu configuro o arquivo .cfg pra esse token? Qual a dll que eu uso?

Obrigado a todos!

Daniel

dae galera…
minha situação é a seguinte: no ws do PR eu consigo conectar normalmente…apenas seto o meu certificado e o certificado que baixei da sefaz-pr e pronto…

agora estou tentando consultar o status do serviço do ws de contingência da receita… mas não consigo conectar… recebo a seguinte msg:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

ja tentei entrar em contato com o pessoal da receita ja faz 2 semanas e até agora não tive nenhuma resposta…

gostaria de saber se, assim como no ws do pr eu precisei baixar os certificados deles , eu preciso baixar algum certificado da receita para conseguir conectar…?? oq preciso fazer para conectar??

valeo
abraco

Deve estar faltando a cadeia de certificados para validar o certificado do
servidor da Receita.
No ws do Parana deu certo pois o teu certificado foi expedido pela mesma
entidade certificadora.

Era bem isso philler… eu que estava marcando…

agora eu consigo conectar no sefaz-pr e no SCAN , masss…
se rodando o programa eu tentar conectar nos 2…por ex. consultar 1º o status no SCAN e depois de pegar o retorno, setar os certificados do Sefaz-pr e fazer a consulta de status tb…na 2º consulta me retorna a mesma msg:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
acontece isso só qdo é para servidores diferentes…
eu só consigo consultar um de cada vez… rodar o programa, consultar um, ai finaliza o programa, ai rodo de volta e só ai consulta o outro…
entendem??
tem algum problema de setar

depois limpar

System.clearProperty("javax.net.ssl.trustStoreType");...
e setar novamente o certificado??

Nao sei te afirmar. Mas como é variavel de ambiente, creio que se voce setar
atraves de arquivos de configuracao, hora um hora outro, nao vai ter galho.
Com isso voce nao precisa fechar e reabrir o prg todo.
Reseta a variavel e instancia a classe novamente.

cara… não querendo abusar… hehe…mas da uma olhada como é minha classe q seta os certificados…

public void setPropertySefaz(int codFilial,int tipoEmissao,String caminhoCertificado)
	{
		System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");   
		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());   

		if(System.getProperty("javax.net.ssl.keyStoreType")==null)
		{
			System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");   
			System.setProperty("javax.net.ssl.keyStore",caminhoCertificado+"certificado-mili-nfe.pfx");//Aqui vem o arquivo do certificado do seu cliente
			System.setProperty("javax.net.ssl.keyStorePassword", "x");//Aqui a senha deste certificado   
		}
		
               System.setProperty("javax.net.ssl.trustStoreType", "JKS");   
		System.setProperty("javax.net.ssl.trustStore", caminhoCertificado+"nfehomologado.keystore");//
		System.setProperty("javax.net.ssl.keyStorePassword", "x");//Aqui a senha deste certificado
}

isso que vc falou não é a mesma coisa que eu estou fazendo né? tem como passar um exemplo?

valewss

É a mesma coisa.
Do teu jeito nao funcionou?

ixe cara… ja vi que estou com problemas…
desse jeito funciona, mas só se eu não setar 2x…se não for para estados diferentes… entende?!
e pensando aqui…sera que não vai ter como 2 usuários, que emitem nfe para diferentes estados (por ex. pr e al), usarem a aplicação?
estou fazendo a aplicação web… mas vai ter gente do PR,AL e SC usando… to f…hehe
ninguém tem ai algumas sugestões?!?

O teu problema esta só no trustStore?
Se sim, porque voce nao coloca todos os certificados em um só JKS?

Se nao, eu é que nao entendi…

é isso mesmo… só no trustStore…

[quote]Se sim, porque voce nao coloca todos os certificados em um só JKS?
[/quote]

sabia que eu não tinha pensado nisso!!! hehe…
vou tentar jogar tudo num só keystore…
valeo de novo

po… batata … funcionou de primeira… haha…

nem preciso fazer todos aqueles ifs que tinha mostrado antes…
vou até tirar o codigo para ninguem querer copiar… heh

valeo…
abraco

Olá pessoal…

Sou desenvolvedora Java e C# e gostaria de divulgar a solução Open Source da minha empresa pra Nota Fiscal eletrônica.
Essa solução foi desenvolvida em C#, mas acredito que, como o C# é muito parecido com o Java (uma cópia, pra falar a verdade, hehe) irá ajudar quem estiver interessado em estudar ou até desenvolver uma solução Java pra nota fiscal eletrônica.

Segue o link para maiores informações: www.uninfe.com.br

Bom estudo para todos.

Pessoal, estou com dificuldades em extrair o CNPJ do certificado que assinou o xml.
Sei que a receita faz isso, pois eles testam se o CNPJ base do certificado é o mesmo
do CNPJ base do emitente.

Alguns certificados vem com o CNPJ logo apos o nome da empresa, por exemplo:
CN=ALGUMA EMPRESA LTDA:01001001000101

Nestes casos é só pegar o getNomeCertificado() e sacar o cnpj.
Mas tenho visto casos em que o CN nao vem com este valor.

Alguma luz por ai? De onde a SEFAZ tira a informacao?

Alencar

cara… ve se a resposta do thingol te ajuda nesse tópico ai

http://www.guj.com.br/posts/list/126975.java

Galera muito boa tarde!

HELP-ME :?

Não estou conseguindo validar a assinatura do xml em alguma notas e as mesmas são geradas no mesmo sistema.
Não consigo achar o erro alguém pode me ajudar?[color=darkblue] [/color]

[quote=Marilice]Galera muito boa tarde!

HELP-ME :?

Não estou conseguindo validar a assinatura do xml em alguma notas e as mesmas são geradas no mesmo sistema.
Não consigo achar o erro alguém pode me ajudar?[color=darkblue] [/color][/quote]

Pode nos informar quais as msgs de erro?
Uma dica que ja posso lhe adiantar: Se tiver dois espacos entre palavras nao valida.
Ex.: “Rua Treze…”. Entre Rua e Treze tem dois espacos. Isso ocorre com muita frequencia en descricao de produtos
e observacoes.

Se nao for isso, manda as msgs de erro.

Alencar

Segue a mensagem

PARSER XML: OK
TIPO DE MENSAGEM: Distribuição da NF-e processada
SCHEMA: OK
ASSINATURA XML: Assinatura INVÁLIDA