Jump to content

Leaderboard

  1. Sergio.

    Sergio.

    Member


    • Points

      8

    • Content Count

      100


  2. CrominhO

    CrominhO

    Member


    • Points

      7

    • Content Count

      1,347


  3. Nuno Silva

    Nuno Silva

    New Member


    • Points

      5

    • Content Count

      15


  4. joaosraposo

    joaosraposo

    New Member


    • Points

      4

    • Content Count

      5



Popular Content

Showing content with the highest reputation since 07/15/2019 in all areas

  1. 4 points
    Boa tarde a todos, Do nosso lado estamos a utilizar o soap client em PHP e a solução que encontrámos passou pela combinação dos seguintes três certificados: .pem do cliente (599999999.pem) DGITA_Issuing_CA2.pem portaldasfinancasgovpt.pem Combinámos os três certificados realizando o copy/past dos certificados DGITA_Issuing_CA2.pem e portaldasfinancasgovpt.pem para dentro do ficheiro .pem do cliente (599999999.pem). Utilizando o ficheiro 599999999.pem, com os três certificados combinados passámos a comunicar com sucesso. Obrigado à todos ( @ei99045 , @Nuno Silva , @Sergio. , @João Januário, @jorang e outros) com as vossas várias contribuições que nos ajudaram a encontrar a solução. Nota: No seguinte link podem aceder aos dois ficheiros pem que refiro acima (https://drive.google.com/drive/folders/1maTSqtDWcoAYjHcFBUGJYRpiJbrmpTcg?usp=sharing)
  2. 4 points
    Boa Tarde, Finalmente resolvi o assunto. Só lamento a falta de suporte/informação por parte da AT A verdade seja dita que o ficheiro PublicChainCA2.p7b já era enviado juntamente com o pedido de novo certificado, mas também é verdade que nunca o usei até hoje. Eu trabalho em ambiente Linux e tive que converter para formato PEM (DGITA_Issuing_CA2.pem), Aqui estão as 2 versões No Curl simplesmente adicionei : --cacert DGITA_Issuing_CA2.pem Passou a funcionar.
  3. 3 points
    Antes de mais obrigado ao @Sergio. & @jorang pois já consigo comunicar com sucesso! O meu código final, que pode ajudar outra malta, ficou da seguinte forma: $xml = '<?xml version="1.0" encoding="utf-8" standalone="no"?>......'; $url = 'https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte'; $pemFile = 'EmpresaAutora.pem'; $pemFilePass = 'Senha do ficheiro EmpresaAutora.pfx'; $pemDGITA = 'DGITA_Issuing_CA2.pem'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE); curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $xml); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSLCERT, $pemFile); curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $pemFilePass); curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM'); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_CAINFO, $pemDGITA); curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); $result = curl_exec($curl); curl_close($curl); Apesar de ter conseguido comunicar com sucesso num dos servidores, noutro servidor recebi um erro idêntico "string(23) "Encountered end of file" que me parece estar relacionado com o teu. Não sei se tem haver com a versão do cURL ou algo assim, mas o que vou fazer é entrar em contacto com o hosting.
  4. 3 points
    O código completo em php que temos: $curl = curl_init($this->_uri); curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE); curl_setopt($curl, CURLOPT_URL, $this->_uri); curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $xml); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSLCERT, $this->_certPath . $this->_certFile); curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $this->_certPass); curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM'); curl_setopt($curl, CURLOPT_SSLKEY, $this->_certPath . $this->_keyFile); curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $this->_certPass); curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM'); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_CAINFO, $this->_certPath . 'cacert.pem'); curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); $response = curl_exec($curl);
  5. 2 points
    Era bom que para a próxima, pelo menos uma vez, o pessoal se juntasse e enviasse Email à AT, em vez de andar de andar a queimar neurónios e a inventar 😕
  6. 2 points
    O que estão a sugerir é alterar o certificado que a ASI enviou quando efectuamos o pedido. Mas segundo o email deles esse certificado não sofre alteração. E porque é que, segundo eles, a alteração do certificado deles foi concluída na 5ºf e os problemas só começaram na 6ºf? Eu ainda acho que o problema está do lado deles e como é fim de semana não têm ninguém de plantão para resolver o problema. Mas claro, 2ºf vai ser bonito. Os clientes todos a ligarem porque a comunicação não está a funcionar e a culpa é sempre do nosso software.
  7. 2 points
    Bem, é estupido, mas aqui vai. Solução para java, extrair em dois PEM os certificados CA enviados já por alguém aqui no forum DGITA_Issuing_CA2.pem e inserir estes certificados no pfx do cliente que é usado para se autenticar no serviço. Usar o truststore com os novos certificados e ficou a funcionar. Override da validação só dá erro 😕 tenho de ver isto melhor, mas está a funcionar. Boa sorte com isso.
  8. 2 points
    Esse ficheiro adiciona um certificado aos 2 que eu postei. Aliás é a nova versão do que expirou, apesar de consegui comunicar sem ele (já assim era)...mas vou analisar. Só não entendo porque isso não foi enviado junto com o comunicado.....enfim.
  9. 2 points
    Bom dia, Partilho convosco a mesma dificuldade. Desde ontem às 16h15 que não conseguimos autenticar guias nos nossos clientes. O erro é o conhecido "The underlying connection was closed: An unexpected error occurred on a send". Também recebemos a indicação na 5a feira da atualização de um tal certificado "portaldasfinancasgovpt.crt", que estranhámos pois era algo que nunca tinha sido configurado. Já experimentámos no software introduzir o tal certificado no client certificates, tal como já o adicionamos nosso pfx, ao request e sem qualquer resultado. Adiciono também aqui um email que recebemos ontem da asi-cd@at.gov.pt após pedido de esclarecimento : "A alteração que a AT efetuou no passado dia 18 de Julho teve por objetivo a substituição do certificado digital de SSL para o URL https://servicos.portaldasfinancas.gov.pt para todos os webServices disponibilizados neste endereço, quer em ambiente de testes/qualidade ou ambiente de produção. Esta foi a única alteração que a AT efetuou face à proximidade da data de expiração do certificado. Dependendo dos sistemas de cada entidade poderá ser necessário adicionar a nova cadeia de certificação do novo certificado digital de SSL do URL https://servicos.portaldasfinancas.gov.pt à keystore da aplicação/sistema operativo para a que o sistema cliente possa estabelecer a ligação de SSL e não receber uma mensagem de erro "... is not trusted". Não é necessário efetuar qualquer alteração em mais nenhum dos certificados digitais que são utilizados no processo. A nova cadeia de certificação é encabeçada pela Sectigo RSA, conforme se representa na figura seguinte:" - mas não enviaram imagem. Na realidade ficámos na mesma. Agradeço qualquer contributo adicional. Obrigado.
  10. 1 point
    Sérgio quando comecei com os softwares de Facturação e Gestão Comercial, não havia mais de 50 em Portugal, hoje quantos estão registados na AT? 2 mil? 3 mil? Podemos ficar à espera que a ASSOFT resolva, tal como resolveu no passado, ou podemos partir a cabeça a criar engenhocas para meter as coisas a funcionar, ou podemos mandar um Email, a quem de direito (AT) para ver que alterações foram feitas e porque os sistemas deixaram de funcionar. Já disse, recebi mais de 400 mensagens do P@P, imagino que cada pessoa aqui tenha pelo menos 1 número de Certificação, e aposto que nem 10 Emails chegaram À AT. E já não é a primeira vez, o pessoal que não fique "unido" e não use a sua "força" e os meios adequados, e depois queixem-se.
  11. 1 point
    Não adianta @Cu5co, Tenho a funcionar normalmente !!!! Na Sexta-feira à noite já tinha toneladas de Posts do P@P no email, revi parte do código e desde então fiz 3 Posts. 1º onde questionava um comando, 2º nem me lembro 3º a Reforçar que o @marcolopes tinha razão, e para o pessoal enviar Email ou abrir questão no E-Balcão em vez de andar a fazer Copy e Paste de chaves 😐 300 Mensagens do P@P no email depois, continuam a "bater no Ceguinho" que têm razão, e ainda se queixam que tiveram o fim de semana a trabalhar 😐 ... Desculpem mas a isto chama-se MASOQUISMO. Se toda a gente tivesse enviado Email ou reportado no E-balcão, antes de estarem a fazer isto tudo, provavelmente até os tipos que estão de Prevenção tinham lá ido ver o que se passava na AT... Assim não, e agora queixam-se 😐 Surreal
  12. 1 point
    Bom liguei agora para a AT e o servidor dos ws de testes quer das faturas quer dos documentos de transporte, quer da parte agricola está desligado. Daí não se conseguir comunicar. A senhora com quem falei não me soube foi dizer quando estará operacional o servidor. EDIT: @Cu5co olha o que escrevi em cima.
  13. 1 point
    Nim, depende do tipo de Vale. A legislação foi alterada pelo OE2019: http://info.portaldasfinancas.gov.pt/pt/informacao_fiscal/legislacao/instrucoes_administrativas/Documents/Oficio_Circulado_30208_2019.pdf Basicamente, existem Vales de Finalidade Única e Vales de Finalidade Múltipla, com momentos diferentes de exigibilidade do IVA.
  14. 1 point
    Correto, mas se a chain estiver lá não faz mal... e o PFX de teste sempre incluiu, estou a considerar na próxima renovação incluir também - mal não fará...
  15. 1 point
    Olá a todos. Hoje de manhã os meus sócios comunicaram-me que os clientes se estavam a queixar que não conseguiam comunicar documentos/guias desde sexta feira passada ao fim do dia. A minha resposta foi de imediato dizer que não iria implementar nada até que a AT dissesse o que foi alterado para além do certificado de acesso deles ao portal deles e que os clientes iriam ter que esperar que a AT resolvesse o problema. Sim, claro que fui pressionado pelos clientes e pelos meus sócios porque fui eu que implementei a comunicação aos WebServices da AT e portanto, sou eu que tenho que resolver os problemas relacionados com este assunto quando estes surgem. E não é que devo ser bruxo. Tinha 99% de certeza que o problema deveria ser da AT. Caramba, era mesmo. Não sei a forma de comunicarmos está correta ou não, mas o que é certo é que sempre funcionou e se alguma coisa eles pretendam alterar, terão que avisar antecipadamente e documentar muito bem. Deixo um conselho a todos e que não terão que seguir, caso o não pretendam, como é lógico: da próxima vez queixem-se à AT, mas em massa, como eu fiz, para eles resolverem o problema ou que digam o que é necessário alterar da parte dos produtores de software. Bom trabalho.
  16. 1 point
    A minha aplicação é em Java Adicionar o DGITA ao roots do sistema operativo nao funciona, mas adicionar ao cacerts tambem não É mesmo necessário acrescentar o DGITA CA 2 ao pfx. Um obrigado ao Nuno Silva que referiu esta questao Efetivamente o TesteWebservices.pfx INCLUI este certificado. O comando para quem precisar: openssl pkcs12 -export -in XXX.cer -inkey XXX.key -certfile DGITA_Issuing_CA2.cer -out XXXX.pfx em que XXXX sao os ficheiros recebidos apos o pedido de certificado
  17. 1 point
    Pois claro, ele poderia comunicar as guias pelo telefone. Acho que nem em tribunal a tiram.
  18. 1 point
    Tens toda a razão. Por mim, já enviei um email à ASI e deixei uma mensagem no e-balcao a questionar o porquê de andarem a dizer que a culpa era dos produtores de softaware. Agora só tenho de ligar aos clientes que fizeram questão de nos ligar a dizer que o nosso programa é que tinha a culpa, para lhes dizer que, como lhes tínhamos dito antes, afinal não tínhamos culpa nenhuma. Depois de todo o stress, até que vai ser uma tarde bem passada. Afinal não temos mais nada para fazer.
  19. 1 point
    Isso não quer dizer que estava tudo bem, pelo contrario a comunicação sempre esteve mal. desde o inicio que isto deveria ser obrigatório para garantir a autenticação fidedigna. portanto acho que se deveriam se preparar e tentar entender como se faz, para poderem contornar este tipo de situações facilmente. O que eu acho é que foi uma tentativa de alterar um erro que desde o inicio esteve presente, sem que lhes sejam atribuídas culpas no cartório.
  20. 1 point
    Bem já não via o forum desde sexta e quando vi hoje ........ O problema é que não tinha nenhuma reclamação de clientes!! E a comunicação no meu software está a funcionar, não fiz nada!
  21. 1 point
    Estou sem palavras, Perdemos um sábado a trabalhar e ainda sou acusado pelo Sr. albertosilva de ser mal intencionado. Portugal no seu melhor Acho que já era altura de exigir à AT melhor suporte e informação.....mas deve ser uma ideia parva pensar nisso. Bom Verão
  22. 1 point
    O que ia expirar era este: Alias name: portaldasfinancas_at Creation date: Aug 9, 2018 Entry type: trustedCertEntry Owner: CN=*.portaldasfinancas.gov.pt, OU=Enterprise SSL Pro Wildcard, OU=Autoridade Tributária e Aduaneira, O=Centro de Gestão da Rede Informática do Governo - CEGER, STREET=Rua Almeida Brandão n7, L=Lisboa, ST=Lisboa, OID.2.5.4.17=1200-602, C=PT Issuer: CN=COMODO RSA Organization Validation Secure Server CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB Serial number: ca93feede24a70e7469b2e7bfc49e726 Valid from: Thu Jul 19 01:00:00 WEST 2018 until: Sat Jul 20 00:59:59 WEST 2019 Certificate fingerprints: MD5: F4:73:43:E9:51:C6:A8:A6:D9:1D:DA:C7:BB:50:D8:3C SHA1: 62:E4:0B:28:06:6E:05:A7:FF:59:F7:3A:FC:1C:F8:0D:92:38:85:52 SHA256: 47:42:5D:57:23:3A:47:B9:84:93:85:90:7C:5F:45:56:FF:BC:33:8D:EA:BE:22:A3:95:A8:57:89:73:50:C8:C2 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Apenas era necessario alterar este pelo novo que foi disponiblizado pela AT. Agora ficou o fim de semana todo parado e eu achava que o problema era nosso, mas derrepente passou tudo a funcionar e nao fiz rigorosamente nada. Apenas deixar a nota que nao mudei mais nada nao adicionei qualquer certificado da DGITA
  23. 1 point
    Não quero estar a sugerir que eu sou responsável por isto tudo ter começado a funcionar normalmente, mas a verdade é que hoje que me chamou a atenção que havia problemas e meia hora depois estava tudo a funcionar. 🙄 Posso ceder o meu IBAN por PM para quem quiser mostrar o seu reconhecimento...
  24. 1 point
    Obrigado @Sergio.. Resolveu. Deixem-me deixar aqui alguma ajuda e corrijam-me se estou errado. Aquando da renovação do nosso certificado enquanto produtores de software é enviado no .ZIP o PublicChainCA2.p7b (no interior DGITA_Issuing_CA2.pem) que até agora não era utilizado e funcionava. A partir de sexta-feira parece que fizeram com que este novo certificado fosse necessário. O certificado pode ser obtido a partir do Link acima do @Sergio. Quanto aos certificados que foram enviados na sexta-feira (portaldasfinancasgovpt) são apenas a quem faz ligação via SSL. Eu cá faço por TLS e não preciso desse certificado. Um abraço a todos e parabéns a este Fórum.
  25. 1 point
    Olha para o que recebeste quando pediste o certificado de autenticação, não tens lá um .p7b? Basicamente agora temos de fazer as coisas como deveriam ser feitas desde início, ter o caminho de certificação completo no pfx.
  26. 1 point
    Se está a se referir a chave pública (chavepublicaat.cer), meti no mesmo link. https://www.evernote.com/l/APA7nr2u729EWJmsnGqvQAjZtbq-6zlbBks/ George
  27. 1 point
    Boas! Todos com o mesmo problema de comunicação ainda. Saque o ficheiro compactado contendo os certificados pelo link a seguir: https://www.evernote.com/l/APA7nr2u729EWJmsnGqvQAjZtbq-6zlbBks/ Eu irei deixar este link até amanhã dia 23-07-2019. George
  28. 1 point
    @Nuno Silva (@si27645) em primeiro lugar não é amanhã, é hoje, porque alguns de nós têm clientes que trabalham ao Fim de semana, em 2º lugar, eu sei que o @marcolopes é rígido, mas ele tem razão. Podes dar as voltas que quiseres, ele tem razão. Andamos TODOS a fazer Corte e Costura, quando é a AT que está mal. Mais, com este corte e costura, grande parte de nós tem o sistema a funcionar e não fez o mais importante, reclamar junto da AT que a cadeia não está a funcionar, então como irão eles arranjar ??? A menos que aches normal andar a fazer Copy Paste de chaves e certificados que nem sequer aparece no manual técnico???
  29. 1 point
    o meu "workaround" será aplicar uma TRUST STORE com o CERTIFICADO enviado pela AT (portaldasfinancasgovpt.crt) Funciona em testes! Mas com uma permissive TRUST STORE também funciona (portanto, não quer dizer grande coisa!) // indica um conjunto de certificados confiaveis para estabelecer a ligacao SSL TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(tsCertificate.getKeyStore()); sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); agora, embrulhar no certificado do PRODUTOR de SW, o certificado enviado (portaldasfinancasgovpt.crt) juntamente com outro que nem sequer sei onde o foram desenterrar, neste momento, não...
  30. 1 point
    Querem saber a melhor? nos emails enviados pela AT, é digo o seguinte: 3 inconsistências!!! 1) Se a plataforma de testes foi actualizada, e o método usado até agora funciona (pela minha parte funciona com um PERMISSIVE TRUST STORE), presumo que a plataforma de PRODUÇÃO tenha de reagir da mesma forma! (o que não está a contecer segundo diversos relatos aqui no tópico) 2) O Código Fonte da aplicação em Java Applet mais recente (FACTEMIPFCLI-1.7.5-0037) NEM SEQUER inicializa uma TRUST STORE!!! Nem "permissive" nem nada que se pareça!!! (código para Facturas e Transportes) KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, "TESTEwebservice".toCharArray()); SSLContext sslContext = SSLContext.getInstance("TLS"); // adicionar um Trust Store que aceita ligacao SSl sem validar o certificado // sslContext.init(kmf.getKeyManagers(), new TrustManager[] {new PermissiveTrustStore()}, null); sslContext.init(kmf.getKeyManagers(), null, null); 3) USANDO o código da AT, o sistema nem sequer comunica! E agora? Em que ficamos? Que salgalhada de todo o tamanho!!!!
  31. 1 point
    Pessoal do PHP, já tenho a funcionar tanto em SOAP como cURL, seguindo as sugestões aqui da malta. A versão em SOAP é positiva para quem estiver com problemas no cURL com o erro PR_END_OF_FILE_ERROR. Tenho neste momento um servidor a funcionar com cURL e outro com SOAP. Para versão do cURL aceder aqui: https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=615478 Versão SOAP: ini_set('soap.wsdl_cache_enabled', '0'); ini_set('soap.wsdl_cache_ttl', '0'); ini_set('default_socket_timeout', 5); /* * Para fazerem download do ficheiro 'documentosTransporte.wsdl': * * 1) Aceder https://faturas.portaldasfinancas.gov.pt/ * 2) Entrar na área "Produtores de Software" * 3) Entrar na área "Testar Webservice" * 4) Clicar em "Obter WSDL" na linha "Documentos de Transporte" */ $wsdl = 'documentosTransporte.wsdl'; $action = 'https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte'; /* * Juntar o conteúdo de 3 ficheiros .PEM no mesmo ficheiro, seguindo esta ordem: * * EmpresaAutora.pem * DGITA_Issuing_CA2.pem * portaldasfinancasgovpt.pem */ $pem = 'EmpresaAutoraCombined.pem'; $xml = '<?xml version="1.0" encoding="utf-8" standalone="no"?> ...'; $client = new SoapClient($wsdl, array ( 'local_cert' => $pem, 'trace' => TRUE, 'encoding' => 'utf-8', 'soap_version' => SOAP_1_2, 'stream_context' => stream_context_create(['ssl' => ['verify_peer' => false, 'verify_peer_name' => false]]) )); $result = $client->__doRequest($xml, $action, 'documentoTransporte', 2, 0);
  32. 1 point
    João A tua explicação ajudou-me a perceber o que me faltava para ter o meu curl a funcionar. Obrigado.
  33. 1 point
    Boas. Acabei de conseguir comunicar 2 documentos em produção com o .pfx alterado (adicionei a cadeia de certificação como sugeriste com o KeyStore Explorer). Vamos ver se na segunda isto ainda funciona ... Senão vai sei o caos ... Obrigado pela ajuda e como de costume este fórum continua a ser das melhores coisas que temos para sobreviver à nossa querida AT 🙂
  34. 1 point
    Ontem (hoje de madrugada) quando comecei a mexer nisto, perguntei se podiam confirmar os Certificados, que o ultimo tinha metade do tamanho do anterior. Agora já li que pessoal fez debug no openssl e que o certificado não estava correcto 😕 ... E se amanhã (segunda feira) a AT, por acaso, assim como quem não quer a coisa, disser que de facto o Certificado não estava correcto? voltamos a alterar tudo ? 😕
  35. 1 point
    Ok, faz sentido, Tive de mudar de sslContext.init(kmf.getKeyManagers(), new TrustManager[]{new PermissiveTrustStore()}, null); Para KeyStore Ss = KeyStore.getInstance("JKS"); Ss.load ((this.getClass().getClassLoader().getResourceAsStream("truststore")),pwd.toCharArray()); TrustManagerFactory TS = TrustManagerFactory.getInstance("SunX509"); TS.init(Ss); sslContext.init(KSM.getKeyManagers(),TS.getTrustManagers(), null); Mudas de bypass para usares a trustStore. Vê se faz sentido Não consigo responder a mensagens tb. si27645@protonmail.com
  36. 1 point
    Boas, Eu tb tinha o bypass e estava a bater new TrustManager[]{new PermissiveTrustStore()} Basicamente ao adicionarmos os dois CA's ao pfx estamos a colocar lá a cadeia de certificação completa. Depois de o fazer é básico Qualquer coisa tb dou uma ajuda
  37. 1 point
    "extrair em dois PEM os certificados CA enviados já por alguém aqui no forum DGITA_Issuing_CA2.pem" -> é editar o ficheiro com um editor de texto e separar os dois blocos em dois ficheiros diferentes, por exemplo: DGITA_Issuing_CA2.pem.1 e DGITA_Issuing_CA2.pem.2. "inserir estes certificados no pfx do cliente que é usado para se autenticar no serviço" -> é correr o comando seguinte para os dois ficheiros produzidos no passo anterior, substituindo os caminhos e password da keystore do certificado cliente. keytool -importcert -noprompt -alias DGITA_Issuing_CA21 -file /path/to/DGITA_Issuing_CA2.pem.1 -keystore ClientCertificate-prod.p12 -storepass <password keystore> keytool -importcert -noprompt -alias DGITA_Issuing_CA22 -file /path/to/DGITA_Issuing_CA2.pem.2 -keystore ClientCertificate-prod.p12 -storepass <password keystore> "Usar o truststore com os novos certificados e ficou a funcionar." -> é adicionar os certificados à truststore cacerts da JVM que estiver a ser usado, por exemplo assim: keytool -import -alias portaldasfinancas1 -keystore /path/to/jre/lib/security/cacerts -file /path/to/portaldasfinancas1.der keytool -import -alias portaldasfinancas1 -keystore /path/to/jre/lib/security/cacerts -file /path/to/portaldasfinancas2.der keytool -import -alias portaldasfinancas1 -keystore /path/to/jre/lib/security/cacerts -file /path/to/portaldasfinancas3.der Os ficheiros portaldasfinancas?.pem podem ser obtidos a partir a partir de ficheiros pem com o seguinte comando: openssl x509 -outform der -in portaldasfinancas1.pem -out portaldasfinancas1.der E os três ficheiros podem ser obtidos a partir do PEM fornecido pela AT, mais uma vez editando com um editor de texto e separando os blocos.
  38. 1 point
    O certificado que a AT enviou esta semana, envia todos os anos... não preciso dele para nada... nunca precisei! Presumo que não será agora que irei precisar... Aliás, o que diz a documentação técnica sobre este certificado (estabelecimento da ligação SSL)?http://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Documents/ComunicacaodosdadosdasfaturasaAT.pdf Diz o seguinte: 4. Estabelecer uma ligação segura em HTTPS com o portal das finanças e utilizando o seguinte endereço de envio de dados de faturas: https://servicos.portaldasfinancas.gov.pt:400/fews/faturas a) Para estabelecer esta ligação é necessário utilizar o certificado SSL previamente submetido e assinado pela AT, através do processo de adesão ao envio de dados das faturas por parte dos produtores de software; ou seja, no ambiente de testes é o certificado TesteWebServices, no ambiente de produção, é o certificado pedido pelo produtor de software através da submissão do CSR (Certificate Signing Request) nada mais a acrescentar! Não vou alterar qualquer código.
  39. 1 point
    Como Adicionaste Sérgio? Ontem (hoje de madrugada) tentei mandar o crt directo no pedido, nada. Tentei extrair a Publica do Crt para assinar o CA, nada. Cheguei a assinar a Nonce essa publica em vez de ser com a publica da AT e nada também 😕 Basicamente os ficheiros têm 3 chaves, uma do Root, outra da assinatura e outra de ligação ao CA 😕 Como é que "adicionaste" os ficheiros de ontem à cadeia (PublicChainCA2.p7b) ??? podes meter o comando por favor? É que se metermos a funcionar mas não percebermos o que está acontecer é mau porque pode parar outra vez 😕
  40. 1 point
    Eu utilizo -K, --config <file> No ficheiro é que coloco os parametros. Acho que se o ficheiro pem for colocado na pasta /etc/ssl/certs/ (linux) é provável que também funcione
  41. 1 point
    O Servidor da AT estev momentaneamente indisponível mas já está a funcionar, guia enviado corretamente agora mesmo
  42. 1 point
    Há malta que tem de alterar, outra malta não. Depende de como tens programado o sistema. Se das outras vezes que actualizaram os root certificates tiveste de alterar alguma coisa, desta vez será igual. Se não tiveste de alterar nada, também deves estar safo agora.
  43. 1 point
    O DL 28/2019, cuja entrada "efetiva" em vigor, dada pelo Despacho 254/2019 SEAF, foi prorrogada para 01/01/2020. Por alteração ao DL 198/2012 passou a incluir no artigo 3º, nos documentos a comunicar, os recibos. No entanto, o artigo 1º (Objeto) desse mesmo DL, em relação a recibos, apenas fala em recibos do Regime IVA de Caixa. Quem comunica os documentos por Webservice ainda não tem wsdl para comunicar recibos. Certo?
  44. 1 point
    @Earendil010102, Vamos por partes: Não percebo qual o motivo para os parâmetros argc e argv estarem relacionados com a execução «em modo debug». Se o teu código não depende dos argumentos passados na linha de comandos, não são necessárias essas variáveis. Outro pormenor: em C, dizer main() é diferente de main(void); o primeiro indica que main aceita um número indefinido de argumentos, o segundo indica que main não aceita argumentos (em C++ não é assim). Relativamente ao fflush(stdin), não só não é a melhor maneira de limpar o buffer, é precisamente um dos erros mais conhecidos e documentados pela comunidade que programa em C. O comportamento de fflush(stdin) é indefinido segundo o próprio standard, o que significa que cada compilador é livre de fazer o que quiser com isso. Por exemplo no meu sistema, essa linha não funciona porque o GCC assim o escolheu. A forma correcta de limpar o buffer é ler o seu conteúdo através de chamadas a getchar() até que seja devolvido um '\n' ou até que o input seja esgotado (EOF). Aqui fica uma função que faz precisamente isso (poderia ser abreviada, mas assim percebe-se melhor a sua intenção): void clear_stdin(void) { int c; do { c = getchar(); } while (c != '\n' && c != EOF); } Apenas a título de curiosidade, fiz dois exemplos no Ideone.com onde podemos ver o comportamento de um determinado programa que aceita um número e uma letra e os devolve ao utilizador; esta versão utiliza fflush(stdin) para limpar o buffer, e esta versão utiliza a função clear_stdin() acima. Como podes ver, a versão que utiliza fflush(stdin) não limpa o buffer correctamente, e como resultado a «letra» lida é a tecla RETURN, que se reflecte no output (uma mudança de linha entre as aspas). Em relação aos restantes pontos, acho que seria interessante (e benéfico para ti) revisitar o código após entregar o trabalho. Desta forma poderás decidir que aspectos deverias melhorar, nomeadamente a tal separação do código em funções diferentes. A longo prazo, esta será uma das capacidades mais importantes a desenvolver, uma vez que a complexidade do código aumenta muito rapidamente com o seu tamanho; é fulcral desenvolver código correcto, compacto e legível que interaja de uma forma simples e explícita com o restante projecto.
  45. 1 point
    Portugal ganha esta sexta-feira um reforço de peso na capacidade de computação, com o arranque oficial das operações de um novo supercomputador português, o BOB, e das atividades do Minho Advanced Computing Centre. [Continua...] In Tek, 2019-08-04
  46. 1 point
    @Earendil010102, sim, agora o teu código funciona como pretendias, mas permite-me deixar alguns comentários sobre o código em si: Declaras a função main() com os parâmetros argc e argv, mas nunca são utilizados. O mais correcto seria declarares simplesmente int main(void) { ... }. fflush(stdin) é uma expressão cujo comportamento não está definido pelo standard da linguagem C; em suma, não é uma forma correcta de limpar o buffer de input. O fluxo do teu programa aparenta funcionar correctamente, mas não é a forma mais lógica de o definir. Experimenta rever bem os ciclos que tens lá (p ex. não faz sentido uma operação que se executa apenas uma vez -- mostrar que a lista está vazia -- esteja dentro de um ciclo while). Acabas por utilizar ciclos while onde podias simplificar e simplesmente utilizar condições. Podias tentar separar a lógica do teu programa e criar uma função para as duas opções principais do menu, em vez de teres tudo dentro da main().
  47. 1 point
    Viva Francisco, boa noite, Antes de mais, bem vindo à Comunidade Portugal a Programar! Para mim, o operator is é mais fácil de explicar, pelo que vamos começar por aí: A sintaxe básica é: expr is type O operator is retorna true quando uma expressão (expr) é do tipo indicado (type). Para isso construí o seguinte exemplo: https://dotnetfiddle.net/0Q2Gq5 O exemplo contém: class Animal, abstrata; class Dog que herda de Animal; class Cat que herda de Animal; class Elephant que herda de Animal; class Tree que não herda de nenhuma class; Contém também três animais (objetos / instâncias de classes): Cão pluto; Gato garfield; Elefante Dumbo Ao executares o exemplo, irás ver que: os três animais são do tipo object (porque uma class herda implicitamente de object); os três animais são do tipo Animal (porque as classes Dog, Cat e Elephant herdam de Animal); O pluto é do tipo Dog mas não é nem Cat nem Elephant, o que faz sentido; O garfield é do tipo Cat mas não é nem Dog nem Elephant, o que também faz sentido; O dumbo é do tipo Elephant mas não é nem Dog nem Cat, o que também faz sentido; Nenhum dos três animais é do tipo Tree - são animais e não são árvores e como Tree não herda de nenhum animal (Cat, Dog, etc.) nem da class Animal, não é possível dizer que pluto, garfield ou dumbo sejam do tipo Tree, porque não são Espero ter esclarecido o operator is. Quanto ao operator as: A sintaxe básica é: expr as type O operator as tenta converter a expressão (expr) no tipo indicado (type). Se a conversão for válida, então é retornada uma instância do tipo indicado, senão, é retornado null. Para demonstrar melhor construí outro exemplo: https://dotnetfiddle.net/1uJPtf O exemplo contém: class Animal, abstrata com uma propriedade também abstrata (int) que indica o número de patas; class Dog que herda de Animal, com 4 patas; class Cat que herda de Animal, com 4 patas; class Spider que herda de Animal, com 8 patas; class Bee que herda de Animal, com 6 patas e com 2 asas (nova propriedade, NumberOfWings) Contém também quatro animais (objetos / instâncias de classes): Cão pluto; Gato garfield; Aranha aragog; Abelha maya; Ao executares o exemplo, irás ver que: consegues converter todos os animais para o tipo Animal e obter o seu número de patas; consegues converter todos os animais para o seu próprio tipo (pluto para Dog, etc) e obter o seu número de patas - repara que o método ShowAsOperatorResults recebe a instância do animal como object; No caso da maya, além de conseguires obter o número de patas, irás conseguir obter também o número de asas, isto porque maya é do tipo Bee Nos casos em que não aparecem o número de patas ou de asas, tal acontece porque não é possível converter a expressão para o tipo indicado, exemplo, não é possível converter o pluto num gato ou numa aranha Com isto, espero ter esclarecido o operator as. Qualquer dúvida, diz. Espero ter ajudado,
  48. 1 point
    @Nandinho, A tua função converter() não devia ser responsável por imprimir o resultado do cálculo que faz. Regra geral, as operações de input/output (através das funções input() e print(), neste caso), devem ficar fora da função propriamente dita. Assim sendo, a tua função deveria ser reduzida a algo como: def converter(miles): return 1.6 * miles Podes então utilizar da seguinte forma: milhas = int(input('entre as milhas a converter: ')) km = converter(milhas) print('{} milhas, são {} kilometros'.format(milhas, km)) Repara na utilização da função format() para mostrar o resultado final; é mais flexível que a forma que utilizaste no teu código. E por fim, um pormenor: o teu código não funciona quando introduzes um número de milhas com casas decimais (experimenta). Facilmente consegues contornar isso substituindo int() por float() na obtenção do valor do utilizador. No entanto, a apresentação de resultados sofre de um problema de arredondamentos: entre as milhas a converter: 6 6 milhas, são 9.600000000000001 kilometros Investiga um pouco sobre a função format() para conseguires chegar ao pretendido: entre as milhas a converter: 6 6 milhas, são 9.6 kilometros
  49. 1 point
    @joaobalaia Se foste vendo o código pela net e aulas, então das duas uma: ou viste e tentaste compreender antes de incorporar no teu projecto, ou então simplesmente incorporaste no teu projecto sem tentares perceber como funciona (que é basicamente «copiar»). Se alguém vier agora explicar o código então chegamos a um ponto ridículo: tens um trabalho que era suposto ser feito por ti, mas cujo código foi escrito sem saberes exactamente como funciona, e cuja explicação de funcionamento foi feita por outra pessoa. O que te proponho é o seguinte: comenta devidamente o teu código como se estivesses a explicá-lo. Se tiveres alguma dúvida, voltas cá e colocas questões concretas.
×
×
  • 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.