Avatar ·

Como fazer uma requisição HTTPS em Go com certificado autoassinado ou inválido?

Olá a todos! Sou novo em Go e estou trabalhando em um projeto onde preciso enviar requisições HTTPS para um servidor de desenvolvimento interno. O problema é que neste servidor é usado um certificado SSL autoassinado, e o Go por padrão rejeita essas conexões com o erro x509: certificate signed by unknown authority.

Meu código atual se parece com isso:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    resp, err := http.Get("https://internal-dev.example.com/api/data")
    if err != nil {
        fmt.Println("Erro:", err)
        return
    }
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

Eu entendo que para produção isso é uma má prática, mas para desenvolvimento local preciso ignorar temporariamente a verificação do certificado. Tentei pesquisar na documentação, mas há muitas estruturas complexas como http.Transport e tls.Config.