Jump to content

Não foi possível criar um canal seguro para SSL/TLS.


porter
Ir para a Solução Solucionado por gobeti.junior,

Postagens Recomendadas

        Olá pessoal, nessa linha:

        string json = (new System.Net.WebClient()).DownloadString(url);

        Está dando o erro de SSL/TLS, habilitei apenas o TLS 1.0, TLS 1.1 e TLS 1.2, o que há de errado nessa rotina

        public static List<Municipios> BuscarMunicipios()
        {
            string url = "https://servicodados.ibge.gov.br/api/v1/localidades/municipios";
            string json = (new System.Net.WebClient()).DownloadString(url); // Erro nessa linha

            var mun = JsonConvert.DeserializeObject<List<Municipios>>(json);
            return mun;
        }

        Windows Form, C#, Windows 10

       Obrigado.
 

Link to comment
Compartilhe em outros sites

Olá, 
Testei aqui no meu ambiente (CSharp, Microsoft Visual Studio Community 2022 (64-bit) , Windows 11) e funcionou normalmente, inclusive habilitando esses mesmos TLSs que vc citou.
Tenta ver se essa ferramenta abaixo indica algo no seu ambiente, é um site que testa SSL/TLS:
https://www.ssllabs.com/ssltest/analyze.html?d=servicodados.ibge.gov.br

Link to comment
Compartilhe em outros sites

Olá gobet.junior,

Obrigado por sua atenção, testei essa mesma rotina em outros computadores, e a mensagem de erro, é a mesma, são computadores usados para transmitir Danfe, não entendo porquê está dando esse erro, essa rotina, fiz o teste pelo ssl labs, aparentemente, está normal, estou testando para aprender a usar API, achei no Youtube: C#, buscando lista de municípios do IBGE via API, C Sharp com Windows Form.

  • Triste 1
Link to comment
Compartilhe em outros sites

Bom dia,
Executei essa rota no postman e pedi exemplos em CSharp, ele indicou essas duas maneiras abaixo:
 

essa com RestSharp:

var options = new RestClientOptions("https://servicodados.ibge.gov.br")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/api/v1/localidades/municipios", Method.Get);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);

e essa com httpClient:

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://servicodados.ibge.gov.br/api/v1/localidades/municipios");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());


Tenta com elas pra ver funciona.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Olá, criei um projeto como Console Application, para testar a rotina, nessa linha:

 static async void Main(string[] args), tive que acrescentar async, para não dar erro nas outras linhas do programa, mas não estou conseguindo compilar porquê Main, está aparecendo grifado em vermelho, não consegui compilar.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace TesteAPI
{
    class Program
    {
        static async void Main(string[] args)
        {
            var client = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get,

Spoiler

 

"https://servicodados.ibge.gov.br/api/v1/localidades/municipios");
            var response = await client.SendAsync(request);
            response.EnsureSuccessStatusCode();
            Console.WriteLine(await response.Content.ReadAsStringAsync());

        }
    }
}

Link to comment
Compartilhe em outros sites

Olá,

Testei essa rotina, está dando o mesmo erro: Não foi possível criar um canal seguro para SSL/TLS.

static async void teste2()
{
       //FORUM CASA DO DESENVOLVEDOR
      // essa com httpClient
      try
      {
         var client = new HttpClient();
         var request = new              HttpRequestMessage(HttpMethod.Get,"https://servicodados.ibge.gov.br/api/v1/localidades/municipios");
         var response = await client.SendAsync(request);  // Erro nessa linha
         response.EnsureSuccessStatusCode();
         Console.WriteLine(await response.Content.ReadAsStringAsync());
         Console.ReadKey();
    }
   catch (Exception e)
    {
        Console.WriteLine(e);
        Console.ReadKey();
    }
}

Link to comment
Compartilhe em outros sites

Tenta com async Task

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace TesteApiConsole
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            var client = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get, "https://servicodados.ibge.gov.br/api/v1/localidades/municipios");
            var response = await client.SendAsync(request);
            response.EnsureSuccessStatusCode();
            Console.WriteLine(await response.Content.ReadAsStringAsync());
        }
    }
}

 

Link to comment
Compartilhe em outros sites

Aqui funcionou com os 2 exemplos, tanto o seu como esse com HttpClient.
Meu dotNet aqui é o 4.7.2.
Você não pode migrar para um visual studio mais novo ?
Porque o código em si não tem problema algum, mas tem algo no seu ambiente que está barrando essa requisição.

Outra sugestão que eu posso dar é procurar por esse erro "Não foi possível criar um canal seguro para SSL/TLS", eu vi que pode ser questão de cadeia de certificados da maquina que precisa atualizar, já vi casos onde teve que atualizar hotfix do windows.

Link to comment
Compartilhe em outros sites

Olá gobeti.junior, obrigado por sua atenção, só uma dúvida, essa cadeia de certificados da máquina, que você se refere, seria o certificado A1 ou A3 ou seria alguma configuração do meu computador, estou usando o Visual Studio 2015, estou pesquisando alguns videos que falem sobre SSL/TLS, não sei onde estou errando.

Link to comment
Compartilhe em outros sites

  • Solução

Bom dia, da uma procurada por cadeias de certificado, já tivemos situações em clientes onde foi necessário atualizar.
Vou deixar 2 materiais que achei aqui da Tecno.
https://atendimento.tecnospeed.com.br/hc/pt-br/articles/360015434633

Mas esse erro pode ser também relacionado a firewall, antivírus, falta de atualização do windows.

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...