Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ronaldo Bueno

ASP + XML + Certificado Digital

Recommended Posts

Pessoal, estou parado com um projeto e preciso de uma força.

 

Primeiro quero dizer que estou disposto a custear um projeto pronto ou algo parecido. Não sei se posso colocar meu e-mail aqui, se puder, alguém me avise por favor.

 

A situação é a seguinte:

 

é a nota fiscal da prefeitura de são paulo (RPS).

 

a-) preciso criar o xml (já fiz e gera com dados dinamicos)

b-) já gero a assinatura com hash (lo abaixo do nó Cabecalho)

c-) preciso assinar com certificado digital (esse certificado esta instalado na minha máquina)

 

Então preciso orientação de como criar o nó Signature, caso alguém tenha interesse em vender uma página pronta e funcionando, agradeço.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

entre em contato, no xanburzum@terra.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele tem informações sobre o que está sendo assinado, a assinatura, as keys usadsa para criar a assinatura, o lugar para armazenar informações arbitrário:

 

<element name="Signature" type="ds:SignatureType"/>
    <complexType name="SignatureType">
      <sequence> 
        <element ref="ds:SignedInfo"/> 
        <element ref="ds:SignatureValue"/> 
        <element ref="ds:KeyInfo" minOccurs="0"/> 
        <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> 
      </sequence>  
      <attribute name="Id" type="ID" use="optional"/>
    </complexType>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ai que o bicho pega rsrs

 

Como vou charmar para pegar o certificado em asp? em que momento faço isso?

 

envio primeiro com as linhas abaixo?

 

Set oXMLHTTP = Server.CreateObject("MSXML2.XMLHTTP")

oXMLHTTP.open "POST", "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL", false

oXMLHTTP.setRequestHeader "POST", "https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL HTTP/1.1"

 

 

 

ninguém para ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

recebi seu email... mas estou com uns projetos me consumindo

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria só implementar a tag Signature

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara,

 

Você não precisa nem de instalar o certificado, apenas do arquivo dele.

 

Já fiz isto para a prefeitura de BH, porém todos os estados são praticamente a mesma coisa. Não da para colocar o projeto todo aqui, mas vou tentar te ajudar. Tentei unir as partes que você precisa aqui, da maneira mais fácil, para que tenha uma idéia do que utilizar. Para assinar o XML, você precisa de algo como:

//Cria o objeto do certificado, informando caminho fisico e senhathis.certificado = new X509Certificate2(certificate_path, certificate_pass, X509KeyStorageFlags.MachineKeySet); //XMLELEMENT é o nodo do XML que quer assinarSignedXml signedXml = new SignedXml(XMLELMENT);signedXml.SigningKey = certificado.PrivateKey;Reference reference = new Reference(); //reference_id é o id do nodo que quer assinar, nao sei se em SP precisa disto//Estas funcoes fazem o trabalho da assinatura do nodoXmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();reference.AddTransform(env);reference.Uri = "#" + reference_id;signedXml.AddReference(reference);KeyInfo keyInfo = new KeyInfo();keyInfo.AddClause(new KeyInfoX509Data(certificado));signedXml.KeyInfo = keyInfo;signedXml.ComputeSignature();XmlElement xmlDigitalSignature = signedXml.GetXml(); //E entao voce gera um XmlElement xmlDigitalSignature que é a assinatura do nodoXmlAttribute attr = this.xmldoc.CreateAttribute("Id");attr.Value = "Ass_" + reference_id;xmlDigitalSignature.Attributes.Append(attr);return xmlDigitalSignature;

 

 

 

Para enviar para a prefeitura, provavelmente você também precisa de assinar o request com o certificado.

//Cria o request com a prefeituraHttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(CAMINHO_DO_SERVICO);//Adiciona o certificadorequest.ClientCertificates.Add(new X509Certificate2(CAMINHO_DO_CERTIFICADO, SENHA_DO_CERTIFICADO, X509KeyStorageFlags.MachineKeySet));//E aí você continua o codigo com o envio do xml

 

 

Não achei o botão para editar meu post...

Agora que vi que isto está no fórum de ASP. O código que postei é .Net, me desculpe.

 

 

 

Mas pode ser que te ajude de alguma maneira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei ontem, mas não obtive sucesso. o meu problema é justamente nessa parte: como chamar o certificado digital, já que o XML, o Hash1, esta tudo ok.

Obrigado pelas dicas, mas se alguém puder ajudar mais agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

adapta o que ele postou para o ASP

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que não entendo nada de .net ex:

essa linha

this.certificado = new X509Certificate2(certificate_path, certificate_pass, X509KeyStorageFlags.MachineKeySet);

como poderia ser traduzida ? tendo uma base, vou tentar migrar para asp

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada que eu coloqeui um post com algumas dicas de como migrar de ASp para ASP.Net, pode te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

rodei até a página 15 e não achei nada

 

 

Incrível. minha pergunta é: não tem ninguém aqui que nunca fez isso?

 

 

Apareça uma alma viva que queira vender isso.

Ps: Não coloquei no post acima porque não achei o edit

 

 

depois de procurar muito e não encontrar nada, resolvi fazer o seguinte: se os feras puder dar alguma orientação e contribuição, ficarei muito grato.

 

 

 

A aplicação principal roda em ASP, mas então irei criar algumas páginas em .NET para fazer o que quero.

Fiz alguns testes e apresentou erro de página. o servidor é digiweb (esta sendo migrado para uol, mas ainda não fizeram esse dominio).

 

As perguntas:

 

1-) O que pretendo fazer funciona ? se sim, funciona bem?

2-) O que preciso para criar páginas aspx?

3-) Tem argumentos específicos na inicialização de uma página aspx?

4-) Alguém teria como me dar um código (exemplo) de como testar uma página?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.