Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problema já conhecido: could not create ssl/tls secure channel. #519

Closed
marcosgerene opened this issue Aug 31, 2017 · 6 comments
Closed

Comments

@marcosgerene
Copy link
Contributor

marcosgerene commented Aug 31, 2017

Bom dia a todos,

Meus dois ultimos PRs (https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/pull/511 e https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/pull/518) foram no sentido de resolver o velho problema que tinhamos (existem mais relatos de outros usuarios aqui) de que na segunda/terceira transmissão de algum DFe o erro "could not create ssl/tls secure channel."

Vamos usar o CTe como exemplo aqui que tenho um caso de uso interessante.

Bem eu usava uma classe STATIC tipo "MeuSistemaCTe" que fazia todo o serviço, convertia meu objeto cte no objeto Zeus, transmitia, consultava, cancelava, etc. Mudei isto pra uma classe "instanciavel" e eu chama o objeto, ou seja, nao ficava mais preso sempre em memoria por ser static.

Isto somado aos meus PRs reduziram o problema, entretanto hoje ocorreu o mesmo problema em um cliente.

Este cliente teve toda a paciência do mundo pra deixar eu "brincar" com a maquina e o certificado dele (tipo A3), fiz o erro aparecer apos tentar emitir um cte com um erro claro (um cfop invalido), corrigir e tentar enviar o mesmo cte.

Sem fechar o sistema, mudei o "ServicePointManager.SecurityProtocol" de SSL3 para TLS12 e funcionou.
Tentei enviar outro CTe ainda com o sistema aberto em TLS12 (nao mudei as configs) e erro aconteceu de novo, mude para TLS e funcionou.

Alguém pode me dar uma luz sobre isto?


SO: Windows 7 64bits SP1
.Net instalado: 4.6.2
Linguagem: C# 6
.Net usado pelo sistema: 4.6.1
Tipo de projeto: winforms, mas uso ClassLibrary para a comunicação com o componente.
Certificado: A3 em cartão.

@marcosgerene
Copy link
Contributor Author

@robertorp leia as duas insues, elas tratam do mesmo assunto mas essa esta bem "mais rica em informações" e mata todas as possibilidades anteriores além de agora eu ter certeza que o recurso certificado ter sido liberado e saber também que mudando o SecurityProtocol o problema é sanado.

@marciojmuller
Copy link
Contributor

Olá!
Nenhuma outra Thread ou aplicação usou o cartão além deste envio de CTe?
Tive problemas no inicio que comecei a utilizar o certificado A3. Eu deixava várias Threads ao mesmo tempo emitindo NFe, emitindo NFCe e fazendo operações de cancelamento, etc.
Ficavam todas as Threads disputando o cartão ao mesmo tempo, e quando uma estava utilizando o cartão a outra perdia a conexão do cartão e acontecia este problema que você relatou.

@marcosgerene
Copy link
Contributor Author

@marciojmuller
Não, este sistema em específico é um emissorzinho apenas e não um sistema em si, não existe concorrência dentro do sistema para tal.

@marcosgerene
Copy link
Contributor Author

Fiz mais alguns testes e nada ainda de sanar o problema.

Vem acontecendo com frequencia, como eu disse mudando o SecurityProtocol funciona nem precisa sair do sistema, so mudar pra um, transmitir, mudar pra outro e transmitir. E é justamente isso que me deixa de cabelo em pé.

@robertorp
Copy link
Contributor

Possível solução para o problema.
https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/532

@marcosgerene
Copy link
Contributor Author

@robertorp a solução do colega ja havia sido implementada por mim como te mostrei no código no dia 08/09.

Eu acredito que consegui sanar o problema, mas de outra forma, eu basicamente troco o protocolo de segurança e tento novamente quando recebo o erro acima,

adeniltonbs added a commit that referenced this issue Jul 16, 2018
…ilbioteca com certificado A3, ocorria o erro "A solicitação foi anulada: Não foi possível criar um canal seguro para SSL/TLS". Atualmente era possível resolver o erro mudando o procolo SSL por meio de ServicePointManager.SecurityProtocol. Mesmo assim a aplicação poderia parar de funcionar depois de algum tempo.

A correção foi testada pelo colaborador Marcus Vinícios que estava enfrentando esse problema e dispunha de um certificado A3 para testes.

O problema havia sido relatado nas issues abaixo:
- #565;
- #519;
- #428;
adeniltonbs added a commit that referenced this issue Jul 16, 2018
…ilbioteca com certificado A3, ocorria o erro "A solicitação foi anulada: Não foi possível criar um canal seguro para SSL/TLS". Atualmente era possível resolver o erro mudando o procolo SSL por meio de ServicePointManager.SecurityProtocol. Mesmo assim a aplicação poderia parar de funcionar depois de algum tempo.

A correção foi testada pelo colaborador Marcus Vinícios que estava enfrentando esse problema e dispunha de um certificado A3 para testes.

O problema havia sido relatado nas issues abaixo:
- #565;
- #519;
- #428;

Fonte: https://stackoverflow.com/questions/2859790/the-request-was-aborted-could-not-create-ssl-tls-secure-channel
adeniltonbs added a commit that referenced this issue Jul 17, 2018
… ServicePointManager.Expect100Continue parece que esta nada tem haver com o certificado. Em vez disso ela torna mais eficiente o tráfego de informações uma vez que permite que o cliente envie apenas o cabeçalho para o servidor para ver se este irá aceitar a requisição, antes de mandar todo o conteúdo

Como a área de cabeçalho foi eliminada para o layout 4.0 da NFe, parece não fazer sentido ligar essa propriedade no momento e nem condicioná-la ao uso de certificados A3. A decisão de não atribuir valor "true" à propriedade ServicePointManager.Expect100Continue poderá ser revertida posteriormente caso se comprove uma relação direta dessa propriedade com os problemas relatados nas issues:
- #565;
- #519;
- #428.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants