У меня есть очень простое приложение на Go со следующим кодом:
var client = &http.Client{
Timeout: time.Duration(30 * time.Second),
}
// skipped payload ...
response, err := client.Post(apiUrlLogin, contentType, &payload)
err
возвращается с:
Post https://xxx/api/login: tls: failed to parse certificate from server:
asn1: structure error: base 128 integer too large
Версия Go - go version go1.10.2 darwin/amd64
Сертификат выдан самостоятельно (корпоративный), я пытался отправлять запросы POST к API с помощью Curl, и он работал нормально.
Сам сбой происходит в Go во время обычной проверки в crypto/tls/handshake_client.go:317
при вызове x509.ParseCertificate(asn1Data)
, что происходит до tls.Config.InsecureSkipVerify
проверки.
Есть ли возможный обходной путь для этой проблемы?Я безуспешно пытался играть с версией TLS, комплектами шифров и т. Д., И теперь у меня есть подозрение, что это может быть ошибкой в Go.
ОБНОВЛЕНИЕ: как упомянул @ain, это известная проблема, и япока не нашел решения.