|
1 - Web service
Um web service pode ser acessado por um programa através do Microsoft .NET Framework (usado pela Sercom) ou Java.
Instalação do Microsoft .NET Framework
- Acesse o Painel de Controle do Windows.
- Clique em Desinstalar um programa (se exibir por categoria) ou Programas e Recursos (se exibir por ícones) para ver os programas instalados.
- Confira se o Microsoft .NET Framework (versão adequada) está na lista.
- Clique em Ativar ou desativar recursos do Windows para ver os recursos do Windows instalados.
- Confira se o Microsoft .NET Framework (versão adequada) está na lista.
A conferência pode ser feita durante o envio da NF / eSocial.
Se o Microsoft .NET Framework (versão adequada) não estiver instalado haverá um erro específico.
Se não houver erro, está tudo OK.
Se for preciso instalar acesse o Microsoft Download Framework e escolha a versão adequada.
Características do Windows e Microsoft .NET Framework
- O Framework 3.5.1 vem instalado no Windows 7 e 8.
Ele só aceita os protocolos SSL3 e TLS 1.0 e a assinatura sha1.
- O Framework 4.5 vem instalado no Windows 10.
Ele aceita as assinaturas sha1 e sha256.
- O Framework 4.6.2 aceita os protocolos SSL3, TLS 1.0, TLS 1.1 e TLS 1.2 e funções específicas da assinatura sha256.
- O Windows 7 só aceita o protocolo TLS 1.2 com uma atualização específica.
- Os Windows 8 e 10 aceitam o protocolo TLS 1.2.
2 - Protocolo e assinatura
O web service define qual protocolo e qual assinatura serão exigidos.
O protocolo pode ser SSL ou TLS com a respectiva versão.
Para ver os protocolos habilitados no computador:
- Acesse o Painel de Controle ou "Internet Explorer 11 - Ferramentas" - Opções da Internet - Avançadas e veja Usar SSL e Usar TLS.
A assinatura pode ser sha1 ou sha256.
3 - Mensagens
| Nº | Mensagem | Motivo (instalação) |
| 01 | Para executar este aplicativo é preciso instalar Microsoft .Net Framework. | A versão adequada do Framework não está instalada (é preciso instalar). |
| Nº | Mensagem | Motivo (assinatura digital) |
| 02 | XML mal formado. | Há caracteres inválidos na linguagem XML (é preciso inibir os caracteres). |
| 03 | Ação cancelada pelo usuário. | A senha do certificado foi solicitada e o usuário clicou em Cancelar em vez de Ok. Pode acontecer também se o usuário demorar a digitar a senha, assim o próprio software do certificado cancela a operação. |
| 04 | O conjunto de chaves não está definido. | O token do certificado digital não está conectado ao computador durante a assinatura. Ocorre em SignedXml.SigningKey = X509Certificate2.PrivateKey. |
| 05 | A chave pública do provedor é inválida (Windows 10). | O token do certificado digital não está conectado ao computador durante a assinatura. |
| 06 | O provedor não pôde executar a ação porque o contexto foi adquirido como silencioso. | A senha do certificado digital foi informada incorretamente em processo silencioso. Processo silencioso é aquele que não mostra a tela do certificado pedindo a senha, que deve ser informada internamente no software chamador do certificado. |
| 07 | Não foi possível carregar o tipo (Could not load type) System.Deployment.Internal.CodeSigning.RSAPKCS1SHA256SignatureDescription do (from) assembly System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=... | A versão do Framework (4.0) não suporta o parâmetro RSAPKCS1SHA256SignatureDescription. Solução: instalar Framework 4.5 ou superior. |
| 08 | Não foi possível carregar o tipo (Could not load type) System.Security.Cryptography.X509Certificates.RSACertificateExtensions do (from) assembly System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=... | A versão do Framework (4.5.1) não suporta o método GetRSAPrivateKey(). Solução: instalar Framework 4.6.2. |
| 09 | Não há suporte para o método. | A versão do Framework (4.5.1, 4.6 ou 4.6.1) não suporta o método X509Certificate2.GetRSAPrivateKey(). Solução: instalar Framework 4.6.2. |
| 10 | O SignatureDescription não pôde ser criado para o algoritmo de assinatura fornecido. | O algoritmo de assinatura (sha256) não é reconhecido. Ocorre ao usar ComputeSignature(). Ocorre ao usar CheckSignature(). Solução: o programa deve usar a função AddAlgorithm(). |
| 11 | Algoritmo inválido especificado. | O algoritmo de assinatura (sha256) não é reconhecido. Ocorre ao usar ComputeSignature(). Solução: o programa deve usar SignedXml.SigningKey = X509Certificate2.GetRSAPrivateKey() em vez de PrivateKey. |
| 12 | Elemento de referência mal formado. | O Framework 4.6.2 só assina a tag XML se a sua referência (Id="ref") iniciar com letra e não podem haver mais de uma tag com a mesma referência. Pode acontecer com a atualização do Windows. Ocorre ao usar ComputeSignature(). Solução: usar Id="a1" em vez de Id="1" ou usar Framework 3.5.1 em vez de 4.6.2. |
| Nº | Mensagem | Motivo (transmissão) |
| 13 | O nome remoto não pôde ser resolvido. | A internet do seu computador não está ativada. O sistema de recepção (SEFAZ / município / eSocial) está fora do ar. |
| 14 | Falha na solicitação com status HTTP 403: Forbidden (proibido). | O acesso ao web service foi negado. O certificado digital não é válido (pode estar vencido). O programa especificou um protocolo e o web service exige outro (SSL/TLS). Em acesso HTTP o conteúdo html pode ter algo não aceito como "C:\". |
| 15 | Folha na solicitação com status HTTP 404: Not Found. | O endereço do web service não existe. |
| 16 | Falha na solicitação com status HTTP 495: Unknown Code. | O programa especificou um protocolo e o web service exige outro (SSL/TLS). |
| 17 | Falha na solicitação com status HTTP 503: Service Unavailable. | O web service está indisponível. |
| 18 | O método "nome" não pode ser refletido. | SoapHeaderAttribute() tem um parâmetro que é um cabeçalho de dados (como foi usado na NFe até 3.10) e a função com os comandos deste cabeçalho não existe. |
| 19 | A mensagem com Action: "endereço" não pode ser processada no destinatário, devido a um ContractFielder incorreto no EndpointDispatcher. | SoapDocumentMethodAttribute() tem o endereço (primeiro parâmetro) inválido. O web service está sendo acessado com http mas deve ser com https. |
| 20 | Referência de objeto não definida para uma instância de um objeto. | SoapDocumentMethodAttribute() tem o parâmetro ResponseNamespace inválido. SoapDocumentMethodAttribute() tem o parâmetro ParameterStyle inválido. O XML tem o atributo "versao" inválido. O web service não atende a função. O web service retornou "null" e houve erro na conversão de object[] "null" para XML. |
| 21 | A resposta não é um XML bem-formado. | O web service gerou um erro interno (nem houve tentativa de conversão de object[] para XML). |
| 22 | A solicitação foi anulada: Não foi possível criar um canal seguro para SSL/TLS. The request was aborted. Could not create SSL/TLS secure channel. | O token do certificado digital não está conectado ao computador durante a transmissão. O programa especificou um protocolo e o web service exige outro (SSL/TLS). O programa especificou TLS 1.2 (exigido pelo web service) mas o Windows ou Framework não o suporta. |
| 23 | A conexão subjacente estava fechada: A conexão foi fechada de modo inesperado. | O endereço do web service não existe. O web service executou um erro interno. |
| 24 | A conexão subjacente estava fechada: Erro inesperado em um envio (ou recebimento). | O Framework está com problema (preciso reinstalar). O sistema de recepção (SEFAZ / município / eSocial) está fora do ar (a contingência NFe pode estar ativada). O programa especificou um protocolo e o web service exige outro (SSL/TLS). O programa especificou TLS 1.2 (exigido pelo web service) mas o Windows ou Framework não o suporta. |
| 25 | A conexão subjacente estava fechada: Não foi possível estabelecer relação de confiança para o canal seguro de SSL/TLS. The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure chanel. |
1) Há certificados necessários e que não estão instalados (cadeia de certificados precisa ser atualizada), como ACRBv2, ACRBv5, ACRBv10, ISRGRootX1, GlobalSign.
Solução: instalar os certificados faltantes no repositório de Autoridades de Certificação Raiz Confiáveis.
2) Há certificados duplicados, como Aut Cert Raiz Br (ACRBv2, ACRBv5, ACRBv10).
Solução: conferir se há só uma linha de cada cadeia (excluir se houver mais de uma).
3) Há certificados com finalidades insuficientes.
Solução: conferir se a coluna de finalidades é "todos" (alterar se não for todos).
4) Como ver os certificados instalados.
Solução: executar CERTMGR.MSC - Autoridades de Certificação Raiz Confiáveis - Certificados.
|
| 26 | Outros erros SSL/TLS. | Pode indicar que a data limite do certificado digital expirou. |
| 27 | Falha no Schema XML. | A conexão com o web service foi feita, mas há caracteres inválidos no layout. |
|
|
4 - Links úteis
5 - Dados técnicos
Web Service é uma classe escrita em uma linguagem suportada pela plataforma .NET (C-Sharp ou VB.NET), que pode ser acessada via protocolo HTTP.
Essa classe pode ser consumida por uma aplicação Web Form, Windows Form ou até mesmo outros Web Service.
Isso significa que você pode acessar qualquer Web Service disponível na Web e utilizar todas as funcionalidades do mesmo.
Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis, possibilitando a integração de sistemas e a comunicação entre aplicações diferentes.
Cada aplicação pode ter a sua própria linguagem, pois os Web Services enviam e recebem dados em um formato universal, o formato XML.
Podemos identificar 3 tipos de funções em programas:
- EXE - As funções ficam dentro do próprio programa e só podem ser usadas pelo próprio programa.
- DLL - O arquivo DLL contém funções exportadas que podem ser usadas por qualquer programa, feito em qualquer linguagem.
- Web Service - As funções ficam armazenadas na internet e podem ser acessadas via HTTP por qualquer programa, feito em qualquer linguagem.
Consumir o Web Service significa executar as suas funções, enviando e recebendo dados.
Tipos - Um Web Service pode ser SOAP ou REST.
SOAP (Simple Object Access Protocol) - É um padrão W3C aberto criado pela Microsoft, Ariba e IBM para padronizar a transferência de dados (cliente e servidor) em diversas aplicações, independente de plataforma e linguagem.
O acesso será sempre via HTTP, evitando assim bloqueio de firewall e proxy.
Os parâmetros são enviados e retornados em uma string XML, através de uma função do Web Service (como no EXE ou DLL).
Pode-se operar no modo especificado em WSDL ou sem usar WSDL.
O Windows já tem SOAP habilitado.
REST (Representational State Transfer) - É uma interface que dois sistemas de computador usam para trocar informações de forma segura pela internet.
Não existe o equivalente a funções, como no SOAP.
Os parâmetros são enviados no cabeçalho (GET) ou no corpo da requisição (POST).
WSDL (Web Services Description Language) - É um arquivo XML que descreve os serviços oferecidos por um Web Service do tipo SOAP, ou seja, as suas funções.
O formato é o proposto pela W3C.
Trabalha com UDDI (Universal Description Discovery and Integration), que permite a publicação de um serviço.
O arquivo WSDL pode ser obtido acessando o endereço do web service com o parâmetro wsdl.
- Exemplo: para o web service https://www.teste.com.br/ws acesse https://www.teste.com.br/ws?wsdl para obter o arquivo WSDL.
O arquivo WSDL pode ser convertido em código fonte C# usando WSDL.EXE, que é instalado junto do Visual Studio C# ou já pode vir instalado no Windows 10.
Ele fica disponível na pasta Microsoft SDK (Software Development Kit).
- Exemplo: C:\Arquivos de programas\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\WSDL.EXE.
Endpoint - É a parte final adicionada a uma URL, que direciona uma API do tipo REST para executar uma tarefa.
- Exemplo: API https://www.teste.com.br/ws1 + endpoint hora = retorna a hora. A chamada será https://www.teste.com.br/ws1/hora.
- Exemplo: API https://www.teste.com.br/ws2 + endpoint {ano} = retorna se o ano é bissexto. Exemplo: https://www.teste.com.br/ws2/2023.
Os parâmetros de URL também podem ser enviados usando '?' no final da URL mais "chave=valor".
Diferentes parâmetros são separados por '&'.
- Exemplo: http://www.teste.com.br/ws.php?a=23&b=teste, onde a variável 'a' tem o valor 23 e 'b' tem o valor 'teste';
Método - Pode ser GET, POST e outros.
- GET envia dados no cabeçaho da requisição, através da URL, que pode ter endpoint ou parâmetros.
GET não usa o corpo da requisição.
Exemplo: GET é usado ao digitar um endereço e pressionar Enter na barra de endereço do navegador.
- POST envia dados no corpo da requisição.
Exemplo: POST é usado ao enviar um formulário preenchido.
XML (Extensible Markup Language) - É um formato de arquivo muito usado no envio e retorno de dados de um Web Service.
XSD (XML Schema Definition) - O arquivo XSD contém regras de validação do Web Service (SOAP ou REST), que ajudam a compreender o layout dos dados.
|