Ir para conteúdo

Arquivado

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

batata004

Assinatura digital com php

Recommended Posts

Após ler muita coisa na internet ainda estou com uma pequena duvida sobre como autenticar um arquivo com certificado digital.

 

Comprei o certificado do tipo A1 para emitir notas fiscais eletronicas na prefeitura aqui de Florianopolis. Já integrei todo o meu sistema com a API da Prefeitura e a forma de gerar a NFe é bem simples: eu realizo um POST contendo um XML e pronto, a Prefeitura gerará a NFe.

 

Minha dúvida é a seguinte: no final do arquivo XML há várias linhas que preciso preencher no formato abaixo. Como que eu gero essas linhas usando PHP e o certificado do tipo A1? Eu procurei bastante na internet e não descobri como que gero essa parte final do arquivo XML.

 

Acredito que vários devs estão passando pelo mesmo problema pois quando ligo no suporte da prefeitura eles dizem que muitas outras pessoas já ligaram pra lá pra saber como se faz isso e eles não sabem como responder e que eu teria que consultar um programador (eu sou um programador, pelo menos acho que sou!) para resolver isso!

OBRIGADO!

 

            <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Sign-4.938194207420864E7">

                <ds:SignedInfo>

                    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
                    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                    <ds:Reference Id="RefElement-3.496850484729869E7" URI="">
                    <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
                    </ds:Transforms>
                    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                    <ds:DigestValue>KsPAoHg2H0y/wSrrOGRihebcE/g=</ds:DigestValue>
                    </ds:Reference>

                </ds:SignedInfo>

                <ds:SignatureValue Id="SignatureValueID-7.454649528132233E7">
                CkDFTzGt0+vg...==
                </ds:SignatureValue>
                <ds:KeyInfo>

                    <ds:X509Data>

                        <ds:X509IssuerSerial>

                            <ds:X509IssuerName>
                            CN=AC Instituto Fenacon RFB G3, OU=Secretaria da Receita Federal do Brasil - RFB, O=ICP-Brasil, C=BR
                            </ds:X509IssuerName>
                            <ds:X509SerialNumber>1c28f49fd377...</ds:X509SerialNumber>

                        </ds:X509IssuerSerial>

                        <ds:X509Certificate>
                        MIIIPDCCBiSg...
                        </ds:X509Certificate>

                    </ds:X509Data>

                </ds:KeyInfo>

            </ds:Signature>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Jack Oliveira
      Olá amigos boa tarde
       
      gostaria de saber de alguma forma que posso criar um jeito das pessoas fazer assinatura online em um contrato
      No caso será preenchido o contrato online e no final a pessoa poder assinar sem precisar ela baixar ou até mesmo imprimir a folha de assinatura, e depois ter que enviar a folha para a empresa
         Que tudo isso poder ser feito online..
      Se ter alguma forma de fazer isso no PHP ou SCRIPT...
           Espero que eu tenha sido objetivo ai
      desde já fico grato pela ajuda que puderem dar....
       
    • Por wolfphw
      Bom dia caros amigos,
       
      estou precisando fazer uma consulta em um WS da Receita Federal mas estou me batendo com algumas dúvidas.
       
      Instalei o certificado que eles me passaram na minha máquina e pelo navegador quando colo a URL do WS ele mostra tudo correto os tipos de consultas e tal, meu problema está no desenvolvimento do client para fazer essa consulta, eu preciso instalar algum Certificado localmente?
       
      E como devo fazer a conexão da minha aplicação com esse WS?
       
      Estou tentando assim:
      <?php require("biblioteca/nusoap.php"); $wsdl = "https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl"; $formaBusca = "listarEmpPorCPF"; $ListaDeCPF = "12345678910"; $CPFUsuario = "12345678910"; $sslcertfile = 'certificado.pem'; $sslkeyfile = 'key.pem'; $passphrase = 'senha'; $param = array('CPFUsuario' => $CPFUsuario, 'ListaDeCPF' => $ListaDeCPF); $soap = new nusoap_client($wsdl, 'wsdl'); $soap->setCredentials("", "", 'certificate', array( 'sslcertfile' => $sslcertfile, 'sslkeyfile' => $sslkeyfile, 'passphrase' => $passphrase, 'verifypeer' => 0, 'verifyhost' => 0 ) ); if($err = $soap->getError()) { die('Error: '.$err); } $result = $soap->call($formaBusca, array('parameters' => $param), '', '', false, true); if($soap->fault) { echo 'Fault! <pre>'; var_dump($result); echo '</pre>'; } else { if($err = $soap->getError()) { die('Error: '.$err); } else { echo '<pre>'; var_dump($result); die('</pre>'); } } ?> E está me dando o seguinte erro:
       
      Error: wsdl error: Getting https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl - HTTP ERROR: cURL ERROR: 58: could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?)
    • Por Gustavo_Pereira
      Boa noite Prezados,
      estou com dúvida na montagem de uma tabela para um software que deverá trazer uma lista com todos os certificados de pessoas inscritas em cursos.
      usuário fará o cadastro usuário efetua login a home traz uma lista com todos os certificados dos cursos que o usuário participou  
      A tela deve trazer as colunas nome do curso, data, e o arquivo pdf para download.
       
      A dúvida então é que não sei bem se a montagem está correta e não sei como fazer o select para o objetivo supra.
       
      Desde já agradeço e aguardo ajuda!
       
       

    • Por louisefgomes
      oii gente, é que surgiu várias dúvidas agora que eu quis iniciar desenho digital...  Então gostaria de saber qual programa vocês indicam, que tipo de notebook é melhor pra aguentar os programas e que mesa digital vocês indicam...
      para da uma ajudinha:
      01. eu queria programas que fossem recomendados para quem quer fazer quadrinhos, porém se existir um que se adeque tanto para quadrinhos quanto para desenhos realista ficaria feliz ( caso não exita pode indicar um programa bom para cada área ?)
      02. sobre as mesas eu ja vi que as melhores são da wacom queria saber qual dessas é melhor : 
            - Mesa Digitalizadora One by Wacom Pequena - CTL472L
            - Mesa Digitalizadora Wacom Intuos Pequena - CTL4100
      Agradeço desde já atenção de vocês !!!
          
    • Por Fernando Rafael
      Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?
       
      Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
       
      Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
       
      OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.
       
      OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
       
      ,
×

Informação importante

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