У меня есть этот код:
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¤cy=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-адрес, который я пытаюсь выполнить, является сторонним поставщиком, и здесь нет никаких возможностей внести некоторые изменения на этой стороне.
Спасибо.