Как включить открытый ключ типа dsa для tls (httpclient) в golang? - PullRequest
0 голосов
/ 25 марта 2019

У меня есть этот код:

package main

import (
    _ "crypto/dsa"
    "crypto/tls"
    "fmt"
    "io"
    "net/http"
    "os"
    "time"
)

func main() {
    url := "https://10.11.183.9:1002/xmlinterface.asmx/CheckPSAccountBalance?id=AAA&currency=810"

    trSkipVerify := &http.Transport{
        MaxIdleConnsPerHost: 10,
        TLSClientConfig: &tls.Config{
            MinVersion:               tls.VersionSSL30,
            MaxVersion:               tls.VersionTLS10,
            PreferServerCipherSuites: true,
            InsecureSkipVerify:       true,
        },
    }

    client := http.Client{
        Timeout:   15 * time.Second,
        Transport: trSkipVerify,
    }

    resp, err := client.Get(url)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    io.Copy(os.Stdout, resp.Body)
}

, и когда я его запускаю, я получаю следующее сообщение об ошибке:

tls: сертификат сервера содержит неподдерживаемый тип открытого ключа:* dsa.PublicKey

здесь я нашел точку: https://golang.org/src/crypto/tls/handshake_client.go switch certs[0].PublicKey.(type) { по умолчанию клиент tls не поддерживает тип открытого ключа dsa.Что я могу сделать, чтобы решить эту проблему?Приведенный выше URL-адрес, который я пытаюсь выполнить, является сторонним поставщиком, и здесь нет никаких возможностей внести некоторые изменения на этой стороне.

Спасибо.

...