Функция tls.Dial
Функция tls.Dial устанавливает TLS-соединение
с указанным сетевым адресом. В первый параметр передается
сеть (например, "tcp"), во второй параметр
передается адрес сервера (например, "example.com:443"),
в третий параметр передается конфигурация TLS
(*tls.Config). Функция возвращает соединение
типа *tls.Conn и ошибку.
Синтаксис
conn, err := tls.Dial(network, address, config)
Пример
Давайте установим TLS-соединение с сервером
"example.com" через порт 443 и выведем
информацию о соединении:
package main
import (
"crypto/tls"
"fmt"
"log"
)
func main() {
// Создаем конфигурацию TLS
config := &tls.Config{
InsecureSkipVerify: true, // Только для примера
}
// Устанавливаем соединение
conn, err := tls.Dial("tcp", "example.com:443", config)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
// Выводим состояние соединения
state := conn.ConnectionState()
fmt.Printf("TLS version: %d\n", state.Version)
fmt.Printf("Cipher suite: %d\n", state.CipherSuite)
}
Результат выполнения кода:
"TLS version: 771"
"Cipher suite: 4865"
Пример
Давайте установим TLS-соединение с проверкой
сертификата сервера на домене "google.com"
и выполним простой HTTP-запрос:
package main
import (
"crypto/tls"
"fmt"
"log"
"time"
)
func main() {
// Настраиваем конфигурацию
config := &tls.Config{
ServerName: "google.com",
}
// Устанавливаем соединение
conn, err := tls.Dial("tcp", "google.com:443", config)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
// Отправляем GET-запрос
request := "GET / HTTP/1.1\r\n" +
"Host: google.com\r\n" +
"Connection: close\r\n" +
"\r\n"
_, err = conn.Write([]byte(request))
if err != nil {
log.Fatal(err)
}
// Читаем ответ с таймаутом
conn.SetReadDeadline(time.Now().Add(5 * time.Second))
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(buffer[:n]))
}
Результат выполнения кода:
"HTTP/1.1 200 OK"
"Content-Type: text/html"
"Date: ..."
Смотрите также
-
функцию
tls.Listen,
которая создает TLS-сервер для приема соединений -
структуру
tls.Config,
которая содержит настройки TLS-соединения -
функцию
tls.LoadX509KeyPair,
которая загружает сертификат и ключ из файлов -
функцию
tls.X509KeyPair,
которая создает пару ключей из байтовых данных