Assinatura digital na camada de transporte com PHP
Bom dia,
Resumo:
implementar assinatura digital na camada de transporte para consumir um web service externo.
Adiante segue o script e a mensagem de erro.
Detalhes:
Não, não se trata de Nfe.... brinks
E infelizmente não consegui pesquisar tópicos antigos porque a páginação do fórum está com problemas (na página de pesquisa ele não passa da primeira =D )....
Bom, o meu caso é o seguinte:
Aqui na empresa temos um sistema financeiro e de controle jurídico que roda em um cartório já a bastante tempo. E um dos módulos consumia o web service do tribunal de justiça local para algumas atividades. Em apenas uma dessas atividades será necessário implementar a assinatura digital para autenticação junto a este web service.
Script:
/* * Envia xml ao tjce: * * $args = array( * 'xml' => 'conteudo do xml', * 'service' => 'nome do servico na URL', * 'action' => 'metodo para chamar no webservice' * ); * */ public function send($args){ //dados $xml = $args['xml']; $service = $args['service']; $action = $args['action']; $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/' . $service . '?wsdl'; // //testa instalacao do soap no servidor if (!class_exists('SoapClient')){ die ("Falha na instalação do soap no servidor."); } $wsdl = $wsdl; $localCert = "/caminho/do/certificado.pem"; $soapClient = new SoapClient($wsdl, array('localCert' => $local_cert)); $theResponse = $soapClient->metodoTeste(); echo $theResponse; }
Erro:
Fatal error: Uncaught SoapFault exception: [soap:Server] Fault occurred while processing. in /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php:40 Stack trace: #0 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php(40): SoapClient->__call('historicoSolici...', Array) #1 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php(40): SoapClient->historicoSolicitacaoSelos() #2 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SealController.php(163): SoapController->send(Array) #3 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/MainController.php(23): SealController->test() #4 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/FrontController.php(37): MainController->run('Seal', 'test') #5 /Users/danielrodrigues/Sites/open-system/openselos/system/index.php(9): FrontController->run() #6 {main} thrown in /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php on line 40
Complementando:
Talvez o problema seja a forma que estou gerando o .pem. Nunca trabalhei com assinatura digital e realmente estou bastante perdido nesse assunto.
Gerei esta chave .pem a partir do arquivo .pfx seguindo estes passos:
http://www.rafaeltheodoro.com.br/nfe/conversao-de-certificado-ca-tipo-a1-de-pfx-para-pem/
Atenciosamente,
Ninguém?? =/
Cri cri cri...
Nossa, é tão complexo assim?
Discussão (2)
Carregando comentários...