Jump to content

Recommended Posts

Posted

Comunicações de series:

Em aplicação c# .net 4.8 está tudo funcional de local para a AT PRD.

Do servidor da aplicação para AT PRD dá erro "Não foi possível estabelecer o canal seguro para SSL/TLS com a autoridade 'servicos.portaldasfinancas.gov.pt:422'."
 

No código já tenho o forcing para tls1.2

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue = true;
ServicePointManager.DefaultConnectionLimit = 9999;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

Alguma ideia?

 

Update: Problema resolvido.

Não foi feita qualquer alteração ao código.
No entanto foi necessário dar permissões às Pool do IIS para o novo certificado instalado na libraria de certificados do windows.

Posted
Em 06/01/2025 às 13:20, sergiosmvc disse:

Boa tarde,

No meu projecto em vb.net 2010 framework 4 só tive que acrescentar a linha:

ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType)

No windows 10 funciona bem...

Será que existe alguma hipotese de funcionar no windows vista?

Já fiz vários updates que encontrei no google e entradas no registry mas dá sempre o mesmo erro...

Lifesaver!!!!

Muito obrigado!

 

Só uma nota: colocar antes do "request"

  • Vote 1
Posted
On 1/6/2025 at 2:37 PM, albertosilva said:

Já foi aqui partilhado mais que uma vez, da mensagem de 9 de dezembro:

 

Obrigado pela informação.

Não me apercebi dessa alteração no contexto da alteração do certificado.

Posted
Em 06/01/2025 às 12:31, Tiago Martins disse:

Recolher? o que queres dizer com "Recolhi de novo o ATCUD" ?

Mando registar de novo a série e ele da o erro que ja existe, a partir dai a comunicação fica a funcionar. Só esta a acontecer  em clientes que não mudaram de série este ano, mas não estou a apanhar a logica da coisa 

 

Posted
Em 06/01/2025 às 15:13, sergiosmvc disse:

Nem no windows 7 consigo colocar a funcionar...

Nós também tínhamos este problema ao usar as classes nativas do .Net. Se o sistema operativo suportasse o TLS 1.2 funcionava tudo correctamente, caso contrário (como com o Windows 7 ou Windows Server 2012 [e possivelmente outros que não testamos]) dava erro.

A solução foi deixarmos de usar as classes do .Net para fazermos a ligação, passando a usar as classes do Chilkat. Ficou a funcionar em todas as versões do Windows (até o velhinho XP comunica com a AT).

Posted
Em 06/01/2025 às 15:26, chesser disse:

Nós também tínhamos este problema ao usar as classes nativas do .Net. Se o sistema operativo suportasse o TLS 1.2 funcionava tudo correctamente, caso contrário (como com o Windows 7 ou Windows Server 2012 [e possivelmente outros que não testamos]) dava erro.

A solução foi deixarmos de usar as classes do .Net para fazermos a ligação, passando a usar as classes do Chilkat. Ficou a funcionar em todas as versões do Windows (até o velhinho XP comunica com a AT).

Mas vou ter que mudar o código todo n?

 

Posted
Em 06/01/2025 às 16:26, chesser disse:

Nós também tínhamos este problema ao usar as classes nativas do .Net. Se o sistema operativo suportasse o TLS 1.2 funcionava tudo correctamente, caso contrário (como com o Windows 7 ou Windows Server 2012 [e possivelmente outros que não testamos]) dava erro.

A solução foi deixarmos de usar as classes do .Net para fazermos a ligação, passando a usar as classes do Chilkat. Ficou a funcionar em todas as versões do Windows (até o velhinho XP comunica com a AT).

Boas, utilizo a chilKat e não estou a conseguir  comunicar, alguém na mesma situação, obtenho a resposta abaixo

Alterei  oHttp.SslProtocol = "TLS 1.2 or higher"  penso que não é necessário pois o default tenta as várias opções disponíveis 

Architecture: Little Endian; 32-bit
Language: ActiveX
Domain: https://servicos.portaldasfinancas.gov.pt
Port: 401
SSL: 1
RequestData:
  HttpVersion: 1.1
  Verb: POST
  Path: /sgdtws/documentosTransporte
  Charset: utf-8
  SendCharset: 0
  MimeHeader: SOAPAction: https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/
  Content-Type: text/xml
ReadTimeout: 20
ConnectTimeout: 10
HttpConnect:
  hostname: servicos.portaldasfinancas.gov.pt
  port: 401
  ssl: 1
  ConnectTimeoutMs: 10000
  calling ConnectSocket2
AddrInfoList:
  AddrInfo:
    ai_flags: 0
    ai_family: 2
    ai_socktype: 1
    ai_protocol: 0
    ai_addrlen: 16
    ai_canonname: (NULL)
    using IPv4.
    ipAddress1: 62.28.254.207
myIP_3:
Posted
Em 06/01/2025 às 15:39, esmagaossosOld disse:


Alterei  oHttp.SslProtocol = "TLS 1.2 or higher"  penso que não é necessário pois o default tenta as várias opções disponíveis 

Realmente penso que isso não será necessário, pelo menos nós não temos isso (o cliente negoceia com o servidor qual deve ser utilizado).

Posted (edited)
Em 06/01/2025 às 15:37, sergiosmvc disse:

Mas vou ter que mudar o código todo n?

Isso dependerá de como tens as coisas implementadas. O código em si (em termos do número de linhas) é mais curto que usando as classes .net.

Se realmente tens de ter isso a funcionar com SO mais antigos, deve valer a pena dares uma vista de olhos à classe Chilkat.Http.

Usamos os métodos:

http.SetSslClientCertPfx para indicar o certificado

http.SetRequestHeader para indicar o SOAPAction

http.PText para fazer o Post

Também colocamos http.Accept="text/xml"

Depois de invocado o PText, é só ir bucar o BodyStr da resposta (Chilkat.HttpResponse).

Basicamente é isto.

Edited by chesser
Posted
Em 06/01/2025 às 16:30, desconfiado disse:

Já consigo comunicar séries mas documentos de transporte continua a dar erro. Nao estou a entender...

Alguém tem o mesmo problema?

Sim, os meus clientes desde hoje ao inicio da tarde nao conseguem comunicar documentos de transporte.

Posted

Boa tarde Pessoal, 

Consigo comunicar, só não testei no XP, vou testar daqui a pouco, 

Em tempos pedi ajuda sobre a Chilkat e foram todos impecáveis, montes de pessoal me ajudou e inclusive enviaram-me código e exemplos. 

Neste caso, quem não está a conseguir comunicar utilizando a chilkat já falou com o rapaz que desenvolve? 

é que numa procura, mesmo que eu defina no cliente SslProtocol="TLS 1.2 ou maior" se o servidor responder ok eu faço 1.3, mas vamos fazer em em 1.0, a Chilkat vai falhar... porque na altura em que ele fez isso, era suposto facilitar o cliente em definir qual usar, mas nao se aplica aqui, porque o servidor permite 1.3 mas depois define a que vai usar...Penso eu

Quem não está a conseguir comunicar é quem está a usar a Chilkat certo ? 

As mentes humanas são realmente um local estranho!

Posted

Em relação a Frameworks, em principior irá sempre funcionar porque os metodos são diferentes. 

Quem usa Chilkat fale com o rapaz por favor, ele não foi muito simpatico comigo, mas respondeu em horass sobre uma duvida que tinha na altura

As mentes humanas são realmente um local estranho!

Posted

Boa tarde,

Estou com um problema depois de ter atualizado o certificado "SSL".

Converti o ficheiro que enviaram portaldasfinancas.gov.pt.p7b para ChavePublicaAT.cer (openssl pkcs7 -in portaldasfinancas.gov.pt.p7b -inform DER -print_certs -out ChavePublicaAT.cer)

faço a importação do certificado com anteriormente fazia:

X509Certificate2 certCP = new X509Certificate2();
certCP.Import( ChavePublicaAT.cer);

Erro:: 'A ligação subjacente foi fechada: Erro inesperado ao receber.'

Erro:  Falha da operação de desencriptação, ver a excepção interior.

Alguém me pode ajudar!? 

Faltou fazer algum passo?

 

Obrigado

Posted
Em 06/01/2025 às 17:16, morgado disse:

Boa tarde,

Estou com um problema depois de ter atualizado o certificado "SSL".

Converti o ficheiro que enviaram portaldasfinancas.gov.pt.p7b para ChavePublicaAT.cer (openssl pkcs7 -in portaldasfinancas.gov.pt.p7b -inform DER -print_certs -out ChavePublicaAT.cer)

faço a importação do certificado com anteriormente fazia:

X509Certificate2 certCP = new X509Certificate2();
certCP.Import( ChavePublicaAT.cer);

Erro:: 'A ligação subjacente foi fechada: Erro inesperado ao receber.'

Erro:  Falha da operação de desencriptação, ver a excepção interior.

Alguém me pode ajudar!? 

Faltou fazer algum passo?

 

Obrigado

Boas tentei fazer o mesmo mas com o pem.

Converti usundo o openssl x509 -in certificado.pem -outform DER -out certificado.cer

no meu codigo acontece "Could not create SSL/TLS secure channel"

Jorge Rocha

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.