NFSe Curitiba/PR - Integração com Webservice em Php e Certificado Digital

Olá devs.

Tenho um projeto que faz a integração via Web service utilizando PHP com um código base que eles disponibilizaram, o Blueprint (procedural) com a prefeitura de Curitiba. A empresa a qual estamos fazendo a conexão possui dois ambientes, sendo um de testes (piloto) e outro de produção. No ambiente piloto não necessita conectar utilizando certificado digital e está funcionando normalmente, ou seja, conseguimos criar as RPS, consultar, ter todos os retornos, porém, no ambiente de produção é necessário realizar a conexão utilizando certificado digital e assinar os arquivos XML’s a serem enviados na integração para criação de RPS e é justamente nesta parte que o projeto parou, pois não sei como fazer isso.

Tentei seguir as orientações do site, tenho todos os arquivos de certificado, porém, ao realizar o envio ele retorna Erro 403.

Detalhes:
A Conexão é via SOAP;

Manuais De integração, De utilização e envio de arquivos XML, Cadeia de certificação - Servidor Produção e Modelo em PHP (startup)

Alguém consegue me ajudar?

Qualquer coisa posso disponibilizar meu código junto com os arquivos de certificado aqui, pois preciso muito dessa ajuda.

Agradeço desde já.

Não tem segredo.

Você converteu o certificado A1 de PFX para o padrão PEM?
Caso não tenha feito, use esse site:
https://www.sslshopper.com/ssl-converter.html

Depois separe o conteúdo dentro dele em dois arquivos cert.pem e key.pem.

Sobre a assinatura do XML, você pode conferir nesse post:
Como assinar o XML em um nó específico (Nota Fiscal)

1 curtida

Bom dia, obrigado pela resposta.

Fiz isso, porém, ele gerou um arquivo PEM com várias keys e certs como pode ser visto neste link Arquivo PEM - NFSe Curitiba - Pastebin.com. Sabe me dizer como eu separo eles?

Quanto ao assinar, estou usando esse plugin do PHP que você menciona, porém, vou tentar seguir suas orientações na postagem mencionada.

É assim mesmo.
É tudo salvo em um único arquivo, mas cada parte está separada pelos delimitadores.
Copie os delimitadores e o conteúdo e salve em arquivos separados.

A chave privada tem os seguintes delimitadores:

-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

A chave publica, ou certificado tem os seguintes delimitadores:

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
1 curtida

Deu tudo certo. Para quem estiver passando as mesmas dificuldades, utilizei este link citado pelo nosso colega @luizvaz para gerar os arquivos PEM. E por mais que na documentação diz que é para assinar os arquivos XML, não precisei fazer isso, apenas enviei os arquivos PEM na conexão e criou a RPS. Obrigado pela ajuda!

1 curtida

Este tópico foi fechado automaticamente 30 dias depois da última resposta. Novas respostas não são mais permitidas.