xyluiscosta Posted August 19, 2022 at 10:39 AM Report Share #626945 Posted August 19, 2022 at 10:39 AM Boa dia, Alguém está a implementar o novo WebService da Segurnaça Social, de Comunicar Vínculo Trabalhador? http://www.plataformaservicos.seg-social.pt/files/plataforma_servicos_especificacoes_tecnicas.pdf http://www.plataformaservicos.seg-social.pt/files/plataforma_servicos_apresentacao.pdf Após ler as especificações técnica e realizar as alterações necessárias para o novo webservice de teste “https://preapp.seg-social.pt/ws/contrato/v1/registarVinculoTrabalhador“ Tenho os dados de acesso ao ambiente de teste, á vários dias que estou a tentar testar e dá sempre este erro ERRO: “A ligação subjacente foi fechada: Não foi possível estabelecer uma relação de confiança para o canal seguro SSL/TLS.” Não sei se alguém pode ajudar, mas desde já obrigado. Link to comment Share on other sites More sharing options...
Rui Carlos Posted August 19, 2022 at 06:25 PM Report Share #626956 Posted August 19, 2022 at 06:25 PM Já tentaste fazer debug? Não tens excepção/erro com mais detalhes? Isso há partida é um erro de TLS, mas não conheço a mensagem de erro para perceber a causa, e há muito por onde o TLS pode falhar. Podes começar por fazer uns pedidos com o cURL ou HTTPie para despistar erros do servidor ou do SO. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Rui Carlos Posted August 21, 2022 at 08:25 AM Report Share #626962 Posted August 21, 2022 at 08:25 AM Há uns dias não estava a conseguir aceder ao site de todo, e hoje lembrei-me que devia ser por causa do IP. Depois de testar novamente o acesso com o Chrome, já deu para ver que o problema é o certificado root não ser conhecido pelo o SO. Ou seja, há partida vais ter que instalar o certificado root manualmente na aplicação. De referir que o host app.seg-social.pt já tem um certificado válido. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Luís Figueira Posted September 14, 2022 at 01:24 PM Report Share #627264 Posted September 14, 2022 at 01:24 PM Em 19/08/2022 às 11:39, xyluiscosta disse: ERRO: “A ligação subjacente foi fechada: Não foi possível estabelecer uma relação de confiança para o canal seguro SSL/TLS.” Olá, Descobri como ultrapassar esse erro, envio o código em baixo em VB.NET. Contudo, ao instanciar o client diz que não tem endpoint, defeni o endpoint igual ao endereço do wsdl, ams não autentica. Podem partilhar o seu código de criação do client para comparar? System.Net.ServicePointManager.ServerCertificateValidationCallback = Function() Return True End Function Obrigado. Link to comment Share on other sites More sharing options...
xyluiscosta Posted September 14, 2022 at 04:39 PM Author Report Share #627270 Posted September 14, 2022 at 04:39 PM Dim requestsrt = buildxml() Dim header As New Authentification System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications) Dim myUri As Uri = New Uri(CParas.GetString("url_ssdireta")) Dim request As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(url_ssdireta), HttpWebRequest) request.Method = "POST" request.ContentType = "text/xml" Dim myNetworkCredential As NetworkCredential = New NetworkCredential(header.Utilizador, header.Password) Dim myCredentialCache As CredentialCache = New CredentialCache From { {url_ssdireta, "Basic", myNetworkCredential} } request.PreAuthenticate = True request.Credentials = myCredentialCache Dim utfEncoder As System.Text.UTF8Encoding = New UTF8Encoding() Dim requestBytes As Byte() = utfEncoder.GetBytes(requestsrt) request.ContentLength = requestBytes.Length Dim theStream As Stream = request.GetRequestStream() theStream.Write(requestBytes, 0, requestBytes.Length) theStream.Close() Using Response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8") Dim readStream As New StreamReader(Response.GetResponseStream(), encode) Dim results As String = readStream.ReadToEnd() Response.Close() trataResposta(results) End Using Private Shared Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function Desta forma consegui ultrapassar os problema de ligação a wsdl da Segurança social direta Link to comment Share on other sites More sharing options...
Rui Carlos Posted September 15, 2022 at 05:50 PM Report Share #627278 Posted September 15, 2022 at 05:50 PM Em 14/09/2022 às 15:24, Luís Figueira disse: Olá, Descobri como ultrapassar esse erro, envio o código em baixo em VB.NET. Contudo, ao instanciar o client diz que não tem endpoint, defeni o endpoint igual ao endereço do wsdl, ams não autentica. Podem partilhar o seu código de criação do client para comparar? System.Net.ServicePointManager.ServerCertificateValidationCallback = Function() Return True End Function Obrigado. Eu fiz testes com o curl no terminal e com o Chrome. Não percebo de VB, mas isso parece-me que tira toda a segurança do TLS. Recomendava-te que no máximo usasses isso no ambiente de testes, mas nunca em produção. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Luís Figueira Posted September 19, 2022 at 09:41 AM Report Share #627308 Posted September 19, 2022 at 09:41 AM Em 15/09/2022 às 18:50, Rui Carlos disse: Eu fiz testes com o curl no terminal e com o Chrome. Não percebo de VB, mas isso parece-me que tira toda a segurança do TLS. Recomendava-te que no máximo usasses isso no ambiente de testes, mas nunca em produção. O certificado do endpoint não é reconhecido, por isso a única forma de avançar é esta. Em 14/09/2022 às 17:39, xyluiscosta disse: Dim requestsrt = buildxml() Dim header As New Authentification System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications) Dim myUri As Uri = New Uri(CParas.GetString("url_ssdireta")) Dim request As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(url_ssdireta), HttpWebRequest) request.Method = "POST" request.ContentType = "text/xml" Dim myNetworkCredential As NetworkCredential = New NetworkCredential(header.Utilizador, header.Password) Dim myCredentialCache As CredentialCache = New CredentialCache From { {url_ssdireta, "Basic", myNetworkCredential} } request.PreAuthenticate = True request.Credentials = myCredentialCache Dim utfEncoder As System.Text.UTF8Encoding = New UTF8Encoding() Dim requestBytes As Byte() = utfEncoder.GetBytes(requestsrt) request.ContentLength = requestBytes.Length Dim theStream As Stream = request.GetRequestStream() theStream.Write(requestBytes, 0, requestBytes.Length) theStream.Close() Using Response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8") Dim readStream As New StreamReader(Response.GetResponseStream(), encode) Dim results As String = readStream.ReadToEnd() Response.Close() trataResposta(results) End Using Private Shared Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function Desta forma consegui ultrapassar os problema de ligação a wsdl da Segurança social direta Olá, pode também facultar a função buildxml? Link to comment Share on other sites More sharing options...
Pelikan Posted September 22, 2022 at 02:35 PM Report Share #627368 Posted September 22, 2022 at 02:35 PM Em 14/09/2022 às 17:39, xyluiscosta disse: Dim requestsrt = buildxml() Dim header As New Authentification System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications) Dim myUri As Uri = New Uri(CParas.GetString("url_ssdireta")) Dim request As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(url_ssdireta), HttpWebRequest) request.Method = "POST" request.ContentType = "text/xml" Dim myNetworkCredential As NetworkCredential = New NetworkCredential(header.Utilizador, header.Password) Dim myCredentialCache As CredentialCache = New CredentialCache From { {url_ssdireta, "Basic", myNetworkCredential} } request.PreAuthenticate = True request.Credentials = myCredentialCache Dim utfEncoder As System.Text.UTF8Encoding = New UTF8Encoding() Dim requestBytes As Byte() = utfEncoder.GetBytes(requestsrt) request.ContentLength = requestBytes.Length Dim theStream As Stream = request.GetRequestStream() theStream.Write(requestBytes, 0, requestBytes.Length) theStream.Close() Using Response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8") Dim readStream As New StreamReader(Response.GetResponseStream(), encode) Dim results As String = readStream.ReadToEnd() Response.Close() trataResposta(results) End Using Private Shared Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function Desta forma consegui ultrapassar os problema de ligação a wsdl da Segurança social direta Boas, estou a tentar usar estes web-services da segurança social em VB.NET. Já tentei com as classes geradas automaticamente pelo VS e não cheguei a lado nenhum. Agora gostava de tentar com este código partilhado pelo xyluiscosta, mas também precisava de saber o que está na função buildxml(). Já agora, uma questão para o xyluiscosta: se usas VB.NET, por que motivo não aproveitaste as classes do Visual Studio para isto? Link to comment Share on other sites More sharing options...
xyluiscosta Posted September 22, 2022 at 06:51 PM Author Report Share #627371 Posted September 22, 2022 at 06:51 PM A função buildxml é o XML a enviar que se encontra no exemplo da documentação da segurança social direta Link to comment Share on other sites More sharing options...
Pelikan Posted September 23, 2022 at 04:51 PM Report Share #627385 Posted September 23, 2022 at 04:51 PM 22 horas atrás, xyluiscosta disse: A função buildxml é o XML a enviar que se encontra no exemplo da documentação da segurança social direta Finalmente isto funcionou-me. xyluiscosta, obrigado MESMO. Link to comment Share on other sites More sharing options...
pnnr Posted October 27, 2022 at 04:33 PM Report Share #627808 Posted October 27, 2022 at 04:33 PM Em 23/09/2022 às 17:51, Pelikan disse: Finalmente isto funcionou-me. xyluiscosta, obrigado MESMO. Boa tarde Pelikan, utilizei o mesmo codigo acima com o exemplo que eles colocam no manual e não estou a conseguir comunicar nem a conseguir perceber o problema. Consegue dizer-me se neste momento consegue fazer o teste e se os serviços estão a funcionar sem problema? Estou a utilizar o codigo abaixo em C#: var requestsrt = buildxml(); string servicePath = "https://preapp.seg-social.pt/ws/contrato/v1/obterComunicacoes"; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; var myUri = new Uri(servicePath); var request = (HttpWebRequest)WebRequest.Create(servicePath); request.Method = "POST"; request.ContentType = "text/xml"; var myNetworkCredential = new NetworkCredential("234234234", "234234234"); var myCredentialCache = new CredentialCache(); myCredentialCache.Add(myUri, "Basic", myNetworkCredential); request.PreAuthenticate = true; request.Credentials = myCredentialCache; var utfEncoder = new UTF8Encoding(); var requestBytes = utfEncoder.GetBytes(requestsrt); request.ContentLength = requestBytes.Length; Stream theStream = request.GetRequestStream(); theStream.Write(requestBytes, 0, requestBytes.Length); theStream.Close(); try { using (HttpWebResponse Response = (HttpWebResponse)request.GetResponse()) { var encode = System.Text.Encoding.GetEncoding("utf-8"); var readStream = new StreamReader(Response.GetResponseStream(), encode); var results = readStream.ReadToEnd(); Response.Close(); trataResposta(results); } } catch (WebException ex) { throw ex; } Link to comment Share on other sites More sharing options...
Pelikan Posted November 18, 2022 at 12:41 PM Report Share #628272 Posted November 18, 2022 at 12:41 PM Já vai uma resposta tardia, mas o serviço por vezes fica indisponível por algumas horas ou dias. No momento desta resposta, estou a obter "Server unavailable" desde ontem. Link to comment Share on other sites More sharing options...
AJECavaleiro Posted March 13, 2023 at 05:12 PM Report Share #630416 Posted March 13, 2023 at 05:12 PM Em 14/09/2022 às 17:39, xyluiscosta disse: Dim requestsrt = buildxml() Dim header As New Authentification System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf AcceptAllCertifications) Dim myUri As Uri = New Uri(CParas.GetString("url_ssdireta")) Dim request As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(url_ssdireta), HttpWebRequest) request.Method = "POST" request.ContentType = "text/xml" Dim myNetworkCredential As NetworkCredential = New NetworkCredential(header.Utilizador, header.Password) Dim myCredentialCache As CredentialCache = New CredentialCache From { {url_ssdireta, "Basic", myNetworkCredential} } request.PreAuthenticate = True request.Credentials = myCredentialCache Dim utfEncoder As System.Text.UTF8Encoding = New UTF8Encoding() Dim requestBytes As Byte() = utfEncoder.GetBytes(requestsrt) request.ContentLength = requestBytes.Length Dim theStream As Stream = request.GetRequestStream() theStream.Write(requestBytes, 0, requestBytes.Length) theStream.Close() Using Response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8") Dim readStream As New StreamReader(Response.GetResponseStream(), encode) Dim results As String = readStream.ReadToEnd() Response.Close() trataResposta(results) End Using Private Shared Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function Desta forma consegui ultrapassar os problema de ligação a wsdl da Segurança social direta Boa tarde, usei o seu código e estou a sempre a obter a resposta "O servidor remoto devolveu um erro: (404) Não encontrado." Qual o url_ssdireta que seve ser usado? Obrigado desde já Link to comment Share on other sites More sharing options...
Pelikan Posted March 14, 2023 at 11:46 AM Report Share #630425 Posted March 14, 2023 at 11:46 AM Boas, os url's são os publicados na documentação: Para registar trabalhador: em testes: https://preapp.seg-social.pt/ws/contrato/v1/registarVinculoTrabalhador?wsdl= em real: https://app.seg-social.pt/ws/contrato/v1/registarVinculoTrabalhador?wsdl em testes, o acesso tem que ser com a chave fornecida por eles, e só com os IP's designados. se isto estiver certo, o problema deve ser outro. 1 Report Link to comment Share on other sites More sharing options...
AJECavaleiro Posted March 15, 2023 at 11:49 AM Report Share #630438 Posted March 15, 2023 at 11:49 AM Em 14/03/2023 às 11:46, Pelikan disse: Boas, os url's são os publicados na documentação: Para registar trabalhador: em testes: https://preapp.seg-social.pt/ws/contrato/v1/registarVinculoTrabalhador?wsdl= em real: https://app.seg-social.pt/ws/contrato/v1/registarVinculoTrabalhador?wsdl em testes, o acesso tem que ser com a chave fornecida por eles, e só com os IP's designados. se isto estiver certo, o problema deve ser outro. Muito obrigado Está resolvido Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now