Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

cjulio

Utilizar Webservices da AT

Mensagens Recomendadas

zabo69    0
zabo69

Aparentemente a versão mínima do windows para suportar TLS1.2 é o windows 7, alguém tem isto a funcionar em versões anteriores? 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Miguel Gonçalves    0
Miguel Gonçalves
2 horas atrás, zabo69 disse:

Como ultrapassou a questão do TLS, no .net 4.5 estou a usar  ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.TLS; 

Isto estava a funcionar até agora, mas deixou de funcionar e devolve o famoso erro 500. Alguém sabe o que se passa?

Viva,


Acho que o servidor arrochou.

Estive durante a manhã de hoje a comunicar sem problemas. A partir das 11:00 comecei a ter esse erro, depois deixei de o receber por volta das 12:30 e agora voltei a receber...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Miguel Gonçalves    0
Miguel Gonçalves
8 minutos atrás, zabo69 disse:

Aparentemente a versão mínima do windows para suportar TLS1.2 é o windows 7, alguém tem isto a funcionar em versões anteriores? 

Tens de ter a 4.5, no mínimo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zabo69    0
zabo69
5 minutos atrás, Miguel Gonçalves disse:

Tens de ter a 4.5, no mínimo.

Penso que o suporte do TLS1.2 ao nível do cliente é definido pelo sistema operativo. O meu utilitário és feito com .net 4.5.

No caso em que me está a dar erro é um windows vista e tem a framework 4.5.1 instalada.

Tenho outros clientes a funcionar, mas acho que são windows7.

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Miguel Gonçalves    0
Miguel Gonçalves
51 minutos atrás, zabo69 disse:

Penso que o suporte do TLS1.2 ao nível do cliente é definido pelo sistema operativo. O meu utilitário és feito com .net 4.5.

No caso em que me está a dar erro é um windows vista e tem a framework 4.5.1 instalada.

Tenho outros clientes a funcionar, mas acho que são windows7.

 

E o erro é o mencionado acima?

Entretanto os outros clientes estão a comunicar bem? 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zabo69    0
zabo69
15 minutos atrás, Miguel Gonçalves disse:

E o erro é o mencionado acima?

Entretanto os outros clientes estão a comunicar bem? 

num vista se colocar  o TLS dá o erro 500, se retirar e ficar o tls1.0 e tls1.1 dá que a ligação foi fechada pelo servidor. 

Nos postos windows 10 está a funcionar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrocerqueira22    0
pedrocerqueira22

Bom dia,

Tenho um certificado que irá expirar dia 13/12/17 com o nome *.portaldasfinancas.gov.pt. Alguem ja tem este certificado?

Atentamente,

 

Pedro Cerqueira

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
janota    1
janota
Em 29/04/2016 às 09:25, cyrusmoney disse:

Já tentei usar o código do utilizador eskiso.

Primeiro pensei que era o meu servidor a bloquear o pedido. Da me a sensação que o pedido não é feito de todo.

Não importa se faço para o 401 ou para o 701 o erro é sempre o mesmo.

Tenho o seguinte erro ao tentar conectar webservice:

Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:701 35

Já tentei várias versões do código e nunca:

 


<?php
$SoapAction = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte/";
//$SoapAction = "https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte/";
$Action = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte";
//Action = "https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte";
$cert_pem = 'pfxcert.pem'; //Caminho completo para o pfxcert.pem ou so o nome se estiver na mesma pasta
$key_pem  = 'pfxKey.pem'; //Caminho completo para o pfxKey.pem ou so o nome se estiver na mesma pasta
$pass_cert = 'TESTEwebservice';
$curl = curl_init(trim($Action));

						curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE);
						curl_setopt($curl, CURLOPT_HTTPHEADER,array(
										'Content-Type:text/xml;Charset=UTF-8',
										'Accept: text/xml',
										'Cache-Control: no-cache',
										'SoapAction='.$SoapAction
						));
						curl_setopt($curl, CURLOPT_URL, trim($Action));
						curl_setopt($curl, CURLOPT_SSLVERSION, 3);
						curl_setopt($curl, CURLOPT_VERBOSE, TRUE); // para ver o que se passa...
						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_SSLCERT, $cert_pem); // o certificado em formato PEM (.pem)
						curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');
						curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $pass_cert);
						curl_setopt($curl, CURLOPT_SSLKEY, $key_pem);
						curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $pass_cert);
						curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
						curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
						$response = curl_exec($curl);
						$info = curl_getinfo($curl);
						print_r( $response );
						print_r( $info );

		if (FALSE === $response) {
			print_r( curl_error($curl) );
			print_r( curl_errno($curl) );
		}
 

 

(tirei propositadamente o $xml do código mas não importa dá sempre o mesmo erro)

Agradecia de saber se alguém tem solução para este problema que pudesse ajudar mesmo resolver o problema pagando. Mas precisava mesmo de saber qual o problema e solução.

Informação extra sobre servidor :

CURL Version: 7.38.0

CURL SSL Version: OpenSSL/1.0.1e

PHP Version: 5.5.31

Desde já muito obrigado.

Como tinha este problema no servidor Centos 6.9 , após partir muita pedra consegui resolver, assim coloco aqui a solução (alteração do código do eskiso)

Só funcionou depois de :

1º Criar TesteWebservices.pem

openssl pkcs12 -inkey ChaveCifraAT.cer -in TesteWebServices.pfx -out TesteWebservices.pem –nodes

2º colocar TesteWebservices.pem na mesma pasta do php por exemplo, em /usr/local/apache/htdocs

3º dar permissões 775 ou 777

Não colocar no Curl a instrução //   curl_setopt($curl, CURLOPT_SSLVERSION, 3);

        $SoapAction = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte/";
        $Action = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte";
        $cert_pem = "TesteWebservices.pem";
       $pass_cert = "TESTEwebservice";
        $xxxml = gerar_xml(); //Gera o XML (ver funcao mais abaixo     
        $curl = curl_init(trim($Action)); 
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE);
        curl_setopt($curl, CURLOPT_URL, trim($Action));
        curl_setopt($curl, CURLOPT_HTTPHEADER,array(
            'Content-Type:text/xml;Charset=UTF-8',
            'Accept: text/xml',
            'Cache-Control: no-cache',
            'SoapAction='.$SoapAction
        ));
        curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
        curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $xxxml);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);  
        curl_setopt($curl, CURLOPT_SSLCERT, $cert_pem); // o certificado em formato PEM (.pem)
        curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');
        $response = curl_exec($curl);  

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Marta Campos    0
Marta Campos

Bom dia,

Alguém tem erro a comunicar as faturas:

"Rejected: | Código: 6 | Erro: Senha não preenchida | Tentativas restantes: -1"

O utilizador e a senha estão corretamente preenchidos.

Só está a acontecer desde a atualização da chave pública.

Editado por Marta Campos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrocerqueira22    0
pedrocerqueira22
Em 27/11/2017 às 11:01, pedrocerqueira22 disse:

Bom dia,

Tenho um certificado que irá expirar dia 13/12/17 com o nome *.portaldasfinancas.gov.pt. Alguem ja tem este certificado?

Atentamente,

 

Pedro Cerqueira

Ola,

Alguem se encontra na mesma situação que eu??

Atentamente,

Pedro Cerqueira

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Jonh    0
Jonh
3 horas atrás, pedrocerqueira22 disse:

Ola,

Alguem se encontra na mesma situação que eu??

Atentamente,

Pedro Cerqueira

Esse certificado já não existe, é o certificado digital do webserver do *.portaldasfinancas.gov.pt.

Já foi mudado em Produção e Testes.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrocerqueira22    0
pedrocerqueira22
2 hours ago, Jonh said:

Esse certificado já não existe, é o certificado digital do webserver do *.portaldasfinancas.gov.pt.

Já foi mudado em Produção e Testes.

Não existe? Foi mudado por qual? Neste momento eu estou a usa-lo como nao existe?

 

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Jonh    0
Jonh
Em 07/12/2017 às 17:20, pedrocerqueira22 disse:

Não existe? Foi mudado por qual? Neste momento eu estou a usa-lo como nao existe?

 

Obrigado

Se reparares o certificado digital  *.portaldasfinancas.gov.pt  que está em todo o Portal já tem uma nova data de validade, temina a 22-11-2018.

Pode confirmar isso facilmente num browser, ou por exemplo aqui neste endereço https://cryptoreport.websecurity.symantec.com/checker/, onde escreves servicos.portaldasfinancas.gov.pt

Se estás a utilizar o certificado com a validade 13-12-2017 podes ter problemas quando chegar o fim da validade do mesmo.

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Cu5co    10
Cu5co

Olá pessoal. Mais um ano passado e surge a mesma dúvida.

É necessário solicitar à AT um novo certificado para comunicar com os web services ou o que foi pedido o ano passado dá para mais um ano?

É que na documentação da AT referente aos web services, diz que o certificado é válido por um ano, o que não corresponde à verdade, pois se eu utilizar o certificado que pedi há 2 anos, ainda funciona pois a sua validade ainda não expirou, faltando 2 semanas.

Que me dizem?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nunopicado    1080
nunopicado
4 minutos atrás, Cu5co disse:

Olá pessoal. Mais um ano passado e surge a mesma dúvida.

É necessário solicitar à AT um novo certificado para comunicar com os web services ou o que foi pedido o ano passado dá para mais um ano?

É que na documentação da AT referente aos web services, diz que o certificado é válido por um ano, o que não corresponde à verdade, pois se eu utilizar o certificado que pedi há 2 anos, ainda funciona pois a sua validade ainda não expirou, faltando 2 semanas.

Que me dizem?

Inicialmente a validade era de apenas um ano, mas entretanto passou a dois.
Esqueceram-se de por isso no manual, provavelmente.
Podes usar o teu até terminar a validade.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade