Jump to content
cjulio

Utilizar Webservices da AT

Recommended Posts

Elio_Mota

boas pessoal,

desde segunda que tenho no mesmo cliente, 1 servidor a funcionar e 4 que não consegue enviar documentos de transporte!! 
o mesmo programa com os mesmos certificados... a hora dos servidores estao a ser sincronizados pelo mesmo servidor!!! 
os servidores tem montado o windows server 2008 standard, as atualizações estao desactivas.


erro: The underlying connection was closed: could not establish trust relationship for the SSL/TLS secure channel. – Data at the root leve lis invalid. Line 1, position 1.

Tudo o que li aqui, fala dos certificados, ja tentei.. alguns em 2015, falam do update KB968730 (no windows xp e 2003)!! 

Já reinstalei os certificados num deles e nada..
Poderá ser, algum tipo de firewall que esteja a atrasar o processo? (acho que andaram a reconfigurar as firewalls)

Estou sem ideias.. 
Obrigado

Share this post


Link to post
Share on other sites
Bruno Barbosa
Em 02/06/2020 às 16:10, paulofvoliveira disse:

Boa tarde pessoal,

 

Tenho um cliente que desde 29/05 não consegue enviar guias.

ERRO: The underlying connection was closed: Could not
establish trust relationship for the SSL/TLS secure channel

è uma máquina velhinha com o windows XP, alguém sabe o que é que estará a falhar ou porque é que começou agora a falhar?

Mais nenhum cliente meu se queixou, logo julgo que o o culpado será o XP e o iexplorer.

Já coloquei o portal das finanças nos sites fidedignos no iexplorer e tudo o mais.

 

Bom dia

penso que possa ter havido alguma alteração nos serviços, tenho 2 versões de um serviço que comunica as guias, um mais antigo ainda em .net2.0 e outro mais recente, já tenho vários reports em que desde de dia 29, os clientes com a versão mais antiga não conseguem comunicar dando o erro reportado acima.

já Há umas semanas fui contactado acerca de uma situação que penso possa estar relacionada, em que os serviços iriam fazer uma actualização interna, mas na altura da passagem, não tive qualquer report de insucesso na comunicação das guias. Ainda assim os próprios serviços indicaram-me alertado que algumas comunicações estariam a dar erro embora não me conseguissem ajudar a identificar os nifs com insucesso.

 

Share this post


Link to post
Share on other sites
eSkiSo

Consegui resolver fazendo com que os certificados AddTrust no servidor (Ubuntu no meu caso) sejam ignorados (visto que expiraram dia 30 de Maio).

Basta fazer o seguinte:
Editar /etc/ca-certificates.conf e colocar um ponto de exclamação (!) antes do mozilla/AddTrust_External_Root.crt (fica !mozilla/AddTrust_External_Root.crt)
Correr: sudo update-ca-certificates

 

PS: Eu coloquei o ponto de exclamacão nos seguintes certificados porque todos eles estão expirados mas a fonte apenas refere o External Root
!mozilla/AddTrust_External_Root.crt
!mozilla/AddTrust_Low-Value_Services_Root.crt
!mozilla/AddTrust_Public_Services_Root.crt
!mozilla/AddTrust_Qualified_Certificates_Root.crt

 

Fonte: https://www.agwa.name/blog/post/fixing_the_addtrust_root_expiration   ( perto do fim do artigo na secção Fixing this problem as a client operator )

Espero que ajude.


Os meus programas em http://www.eskiso.net

Share this post


Link to post
Share on other sites
laboss

Boas tive um problema num cliente com uma Maquina Windows Server 2003 (XP) não conseguia comunicar dava erro de ligação subjacente, instalei o KB968730 e os dois certificados root em anexo e ficou a funcionar

  • https://crt.sh/?d=1199354
  • https://crt.sh/?d=1720081

Share this post


Link to post
Share on other sites
davdew05
4 horas atrás, laboss disse:

Boas tive um problema num cliente com uma Maquina Windows Server 2003 (XP) não conseguia comunicar dava erro de ligação subjacente, instalei o KB968730 e os dois certificados root em anexo e ficou a funcionar

Boas, tenho o mesmo problema. Já coloquei os certificados, mas não encontro a lado nenhum o KB968730 XP PTG será que alguem o pode disponibilizar?

 

Obrigado.

Share this post


Link to post
Share on other sites
eSkiSo
10 minutos atrás, davdew05 disse:

Boas, tenho o mesmo problema. Já coloquei os certificados, mas não encontro a lado nenhum o KB968730 XP PTG será que alguem o pode disponibilizar?

 

Obrigado.

Parece que esse foi substituído por este: https://www.catalog.update.microsoft.com/Search.aspx?q=KB3072630

 

Source: https://superuser.com/questions/1467569/looking-for-hotfix-to-allow-windows-server-2003-to-connect-via-sha256-ssl


Os meus programas em http://www.eskiso.net

Share this post


Link to post
Share on other sites
davdew05
11 minutos atrás, eSkiSo disse:

Obrigado, mas entretanto consegui resolver instalando estes 3 certificados: Certificados.zip

Os certificados foram instalados com a localização automática, depois a comunicação deu sucesso logo a primeira.

Nota: Como a máquina tinha várias utilizadores, tive que instalar estes certificados em todos os utilizador que podiam ter que comunicar guias.

Mais uma vez obrigado a comunidade.

PS: 2 dos certificados são os certificados disponibilizados pelo laboss neste forum (certificados)

  • Vote 1

Share this post


Link to post
Share on other sites
albertosilva
11 minutos atrás, davdew05 disse:

Nota: Como a máquina tinha várias utilizadores, tive que instalar estes certificados em todos os utilizador que podiam ter que comunicar guias.

Na instalação dos certificados, ao escolher a store onde pretende instalá-los, creio que tem a opção de os instalar para o "computador".

  • Vote 1

Share this post


Link to post
Share on other sites
Luís Moreira

Alguém que esteja a usar SoapUI pode ajudar?

Eu estou a tentar fazer o pedido ao "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte/"

E não estou a conseguir fazer o pedido dá sempre o erro (já validei o xml com o wsdl e não dá erro) : 

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Body>
      <env:Fault>
         <faultcode>env:Client</faultcode>
         <faultstring>Internal Error</faultstring>
      </env:Fault>
   </env:Body>
</env:Envelope>

Que certificados tenho que usar?

Share this post


Link to post
Share on other sites
Elio_Mota
16 hours ago, davdew05 said:

Obrigado, mas entretanto consegui resolver instalando estes 3 certificados: Certificados.zip

Os certificados foram instalados com a localização automática, depois a comunicação deu sucesso logo a primeira.

Nota: Como a máquina tinha várias utilizadores, tive que instalar estes certificados em todos os utilizador que podiam ter que comunicar guias.

Mais uma vez obrigado a comunidade.

PS: 2 dos certificados são os certificados disponibilizados pelo laboss neste forum (certificados)

 

16 hours ago, albertosilva said:

Na instalação dos certificados, ao escolher a store onde pretende instalá-los, creio que tem a opção de os instalar para o "computador".

Confirmo que resultou!!! No meu caso tamos a falar de Windows Server 2008 Standard.

Importei atraves do MMC.exe - Certificados - Conta de Computador

importei para os Autoridades de Certificados de Raiz Fidedigna - Certificados

No final de importar os 3 certificados o envio funcionou!! 

Muito Obrigado.. Já agora alguem tem ideia do que sejam cada um dos certificados?

Espero Não me ter enganado:

1199354.crt - Copyright (c) 1997 Microsoft Corp.
1720081.crt - USERTrust RSA Certification Autho
ca_bundle.crt - ZeroSSL RSA Domain Secure Site CA

Edited by Elio_Mota

Share this post


Link to post
Share on other sites
davdew05
Em 04/06/2020 às 20:11, Elio_Mota disse:

Confirmo que resultou!!! No meu caso tamos a falar de Windows Server 2008 Standard.

Importei atraves do MMC.exe - Certificados - Conta de Computador

importei para os Autoridades de Certificados de Raiz Fidedigna - Certificados

No final de importar os 3 certificados o envio funcionou!! 

Muito Obrigado.. Já agora alguem tem ideia do que sejam cada um dos certificados?

Espero Não me ter enganado:

1199354.crt - Copyright (c) 1997 Microsoft Corp.
1720081.crt - USERTrust RSA Certification Autho
ca_bundle.crt - ZeroSSL RSA Domain Secure Site CA

Boa tarde,

Os 2 Primeiros são certificados de raiz na cadeia de certificados. O 3 é um certificado que recebi da AT no inicio do ano quando renovei o certificado da empresa onde trabalho.

Teoricamente estes certificados só são necessários em sistemas operativos que já não têm o windows Update, tipo windows XP, etc...

Não sei explicar melhor :)

Abraço.

  • Vote 1

Share this post


Link to post
Share on other sites
tiagojfpais

Bom Dia,

Terminal# openssl s_client -connect servicos.portaldasfinancas.gov.pt:401

...

CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify error:num=10:certificate has expired
notAfter=May 30 10:48:38 2020 GMT
verify return:0
write:errno=104
---
Certificate chain

...

Key-Arg   : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1591177148
Timeout   : 300 (sec)
Verify return code: 10 (certificate has expired)

Para quem utiliza SoapCliente em soluções com servidor online, caso estejam com o problema do "Verify return code: 10 (certificate has expired)", este problema é do vosso servidor que possivelmente foi apanhado naquele problema da "Sectigo - External CA Root Expiring May 30, 2020".

Eis algumas possíveis formas de resolução deste problema (pelo menos no meu caso foi assim):

Se o servidor for gerido pela empresa que fornece o vosso alojamento, devem solicitar aos mesmos para procederem à resolução, caso seja gerido por vocês podem tentar estas possíveis soluções:

1 - Atualizar o vosso OpenSSL para a versão 1.1.1 ou superior (Que já possui os certificados válidos);
2 - Caso não seja possível atualizarem para essa versão de OpenSSL, têm que solicitar a eles para retirar o certificado CA Root que se encontra expirado da "Chain Certificates" da vossa versão. (Podem encontrar aqui mais informação: https://www.agwa.name/blog/post/fixing_the_addtrust_root_expiration)
3 - Instalar os novos certificados disponibilizados pela Sectigo. (Podem encontrar aqui mais informação: https://support.sectigo.com/articles/Knowledge/Sectigo-AddTrust-External-CA-Root-Expiring-May-30-2020)

No meu caso eles executaram o 2 e 3 passo e resolveu o problema...

Share this post


Link to post
Share on other sites
Deneek

Hello,
We have a customer that has the below error after they updated to our latest certificate, our certificate are being updated when AT releases a new one. Kindly advise if our customer needs to update its latest AT certificate as well as this is a requirement to update their certificate on a timely manner. Also need your opinion on what could have possible caused the error below, given that they are using our latest certificate.
 

Quote

03 jun 2020 15:15:34,834 ERROR TransportationInboxEntry callService - ServerSOAPFaultException caught:A server SOAP fault exception was raised when attempting to call the web service: mismatched tag, expected hr at offset 244 of
03 jun 2020 15:15:34,834 ERROR TransportationInboxEntry setResponseStatus - A server SOAP fault exception was raised when attempting to call the web service: mismatched tag, expected hr at offset 244 of

 

Share this post


Link to post
Share on other sites
spinache

Ola pessoal,
Desculpe por não falar muito bem em português em primeiro lugar. Este fórum é muito útil, pois eu o usei no passado para resolver alguns dos problemas que tivemos ao implementar relatórios de faturas em tempo real. No momento, eu queria obter alguns conselhos sobre como devemos lidar com este caso: digamos que, devido a um erro no sistema, não fomos capazes de relatar uma fatura em tempo real ao serviço da autoridade fiscal na Web, resultando em um prazo superior a 5 dias. Corrigimos o erro e queremos ingerir a fatura em nosso sistema para que fique visível no arquivo SAF-T. O problema que temos é: quando salvamos a fatura em nosso sistema (geramos uma assinatura da fatura anterior) e não a reportamos ao serviço web da autoridade tributária, a próxima fatura que será relatada com a assinatura gerada com base na assinatura da fatura anterior que não foi relatada.
Isso resultará em uma lacuna no banco de dados da autoridade tributária.
Portanto, a pergunta final é: como você lida com a situação quando não relatou a fatura em tempo real?

Original in english:
Hello guys,
Sorry for not speaking in Portugese too well in the first place. This forum is very helpful as I used it in the past to resolve some of the problems we've had while implementing real-time invoice reporting. Right now I wanted to reach out some advices on how should we handle this case: let's say due to a system bug we were not able to report an invoice in real-time to tax authority webservice, resulting in exceeding 5 day deadline. We fix the bug and want to ingest the invoice in our system so it will be visible in SAF-T file. The problem we have is: when we save the invoice in our system (generate a signature for it from previous invoice) and do not report it to tax authority webservice, the next invoice that will be reported with the signature that was generated based on signature from previous invoice that was not reported. 
That will result in a gap in tax authority database.
So the final question is: how do you handle situation when you did not report the invoice in real-time?

Share this post


Link to post
Share on other sites
Rui Carlos
Em 10/06/2020 às 18:45, Deneek disse:

Hello,
We have a customer that has the below error after they updated to our latest certificate, our certificate are being updated when AT releases a new one. Kindly advise if our customer needs to update its latest AT certificate as well as this is a requirement to update their certificate on a timely manner. Also need your opinion on what could have possible caused the error below, given that they are using our latest certificate.

That looks like an error parsing the XML payload.

Share this post


Link to post
Share on other sites
Mr Rick

Bom dia,

Estou a implementar uma integração com a at. Estou a usar java e a basear-me no código exemplo que eles têm disponível para validar a comunicação antes de fazer um refactor e colocar "a gosto".

 

Estou a ter problemas com as truststores, mesmo especificando a truststore a null ou usando a 'PermissiveTrustStore' ele tenta-me ir buscar as stores à root do skdman. Liguei os logs na JVM a -Djavax.net.debug=all 

Aqui ficam os logs 

usb0iiG.png

 

Aqui fica o código do SslContext

UOHeHya.png

Obrigado.

Cumprimetnos,

Edited by Mr Rick
Added a new image

Share this post


Link to post
Share on other sites
desconfiado

Temos um cliente com windows XP que até há alguns dias comunicava documentos de transporte sem problemas e hoje começou a receber a seguinte mensagem:

"could not establish trust relationship for the ssl/tls secure channel on servico.portaldasfinancas.pt:401"

 

 

Estive a verificar os serviços no portal do efactura e parecem estar a funcionar correctamente. Também ninguém mais se queixou.

Verifiquei o nosso certificado e está registado na store correctamente e com validade até 2022.

A chave publica da AT termina em Julho mas para já ainda está válida.

Alguém sabe o que poderá ter acontecido? 

Share this post


Link to post
Share on other sites
m_s_f_@hotmail.com
 // Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
            AssetManager assetManager = context.getAssets();
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            Certificate ca = cf.generateCertificate(assetManager.open("ChaveCifraPublicaAT_Producao.cer"));


// Create a KeyStore containing our trusted CAs
            //String keyStoreType = KeyStore.getDefaultType();
            //KeyStore ks = KeyStore.getInstance(keyStoreType);
            KeyStore ks = KeyStore.getInstance("pkcs12");
            ks.load(this.getClass().getClassLoader().getResourceAsStream(keystoreFile), keystorePassword.toCharArray());
            ks.setCertificateEntry("ca", ca);

// Create a TrustManager that trusts the CAs in our KeyStore
            String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
            TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
            tmf.init(ks);

            KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            kmf.init(ks, keystorePassword.toCharArray());

// Create an SSLContext that uses our TrustManager
            SSLContext sc = SSLContext.getInstance("TLS");
            //sc.init(null, tmf.getTrustManagers(), null);//este foi o que usei nos testes com https, pedido simples
            sc.init(kmf.getKeyManagers(), null, null);

            try {
                URL url = new URL(stringURL);
                HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
                conn.setSSLSocketFactory(sc.getSocketFactory());
                conn.setRequestMethod("POST");
                conn.setDoOutput(true);
                conn.setDefaultUseCaches(false);
                conn.setRequestProperty("Content-Type", "text/xml; charset=utf8");
                conn.setRequestProperty("Accept", "text/xml");
                conn.setRequestProperty("SOAPAction", SOAP_ACTION);
                //push the request to the server address

                //TESTE
                conn.connect();

                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                wr.write(body);
                wr.flush();

                //get the server response
                InputStream is = null;
                Log.i("testeAT","___:::Status Code -> "+conn.getResponseCode()+" :::___");
                if(conn.getResponseCode() >= 200 && conn.getResponseCode() < 400 )

Boas, estou a tentar testar a comunicação de uma aplicação Android à AT para a emissão de guias de transporte. Tenho um erro de expiração de certificado, mesmo acabando de fazer o download do certificado do site. Alguém tem alguma dica do que fazer? Está aqui algum do código que estou a usar.


Erro: javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate expired at Sat May 30 11:48:38 GMT+01:00 2020 (compared to Mon Jun 22 17:24:54 GMT+01:00 2020)

Obrigado

Share this post


Link to post
Share on other sites
José Jorge Matos

Boa tarde,

Alguém já implementou a comunicação de e-DIC e e-DA por webservices para o Portal Aduaneiro?

De acordo com a documentação, estou a utilizar o ambiente de testes com o certificado TesteWebservices.pfx.

Os requisitos de segurança são:

  • autenticação do utilizador
  • integridade e autenticidade da mensagem SOAP (assinatura digital)

As mensagens SOAP devem incluir um Security Header contendo a assinatura digital gerada com base na chave privada do certificado cliente.

Aqui vai um exemplo que vem na documentação. A bold está o que resulta da assinatura do ficheiro XML.

<soapenv:Header>
<wsse:Security xmlns:wsse=“...”>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm=“...”/>
<ds:SignatureMethod Algorithm=“...”/>
<ds:Reference URI="...">
<ds:Transforms>
<ds:Transform Algorithm=“...”/>
</ds:Transforms>
<ds:DigestMethod Algorithm=“...”/>
<ds:DigestValue>
digestValue
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
signatureValue
</ds:SignatureValue>
<ds:KeyInfo Id="...">
<wsse:SecurityTokenReference wsu:Id="..." xmlns:wsu="...">
<ds:X509Data>
<ds:X509IssuerSerial>
<ds:X509IssuerName>
certificateIssuerName
</ds:X509IssuerName>
<ds:X509SerialNumber>
certificateSerialNumber
</ds:X509SerialNumber>
</ds:X509IssuerSerial>
</ds:X509Data>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</soapenv:Header>

A assinatura digital deve ser criada de acordo com as seguintes indicações:

Elemento a assinar:

SOAP Body

Algoritmo utilizado na canonicalização da mensagem (Canonicalization Method):

http://www.w3.org/2001/10/xml-exc-c14n#

Algoritmo utilizado na assinatura da mensagem (Signature Method):

http://www.w3.org/2000/09/xmldsig#rsa-sha1

Tipo de identificação de chave (Key Identifier Type) utilizado:

X509IssuerSerial (certificate issuer name and serial number)

 

Já consegui resolver a parte da autenticação do utilizador e consigo obter os valores para  certificateIssuerName e certificateSerialNumber.

Alguém pode ajudar-me por favor com um exemplo em C#?

Obrigado

JJM

Share this post


Link to post
Share on other sites
Rui Carlos
3 horas atrás, m_s_f_@hotmail.com disse:

Erro: javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate expired at Sat May 30 11:48:38 GMT+01:00 2020 (compared to Mon Jun 22 17:24:54 GMT+01:00 2020)

Parece o problema com o certificado root expirado discutido na página anterior.

Vê, por exemplo, esta mensagem: https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=618370

Share this post


Link to post
Share on other sites

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.