Судя по тому, что ваш сервер использует порт 443
, я предполагаю, что сервер ожидает соединения TLS.Чтобы получить такое соединение, вы можете использовать tls.Dial
:
conn, err := tls.Dial("tcp", servAddr, nil) // servAddr not tcpAddr
Это соединение будет обрабатывать основные этапы, необходимые для шифрования TLS, такие как подтверждение связи TLS, и позволит вамWrite
байтов, которые вы хотите отправить, вместо того, чтобы выполнять шифрование самостоятельно.
Поскольку вы упомянули ошибку при проверке сертификата, использование
conn, err := tls.Dial("tcp", servAddr, &tls.Config{InsecureSkipVerify: true})
отключит эту проверку. Имейте в виду, что это удаляет большую часть безопасности, предоставляемой TLS.
Одно замечание. Я бы предложил вам использовать net/http
для отправки простых HTTP-запросов.Чтобы отключить проверку сертификата здесь, вы можете использовать
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
, но, опять же, имейте в виду, что это удаляет большую часть безопасности TLS. Вы можете проверить этот ответ для получения более подробной информации об отключении этого для отправки запроса с помощью net.http
.