Функция tls.X509KeyPair
Функция tls.X509KeyPair загружает и парсит сертификат X.509
и соответствующий ему приватный ключ из байтовых срезов.
В первый параметр мы передаем байтовый срез с PEM-кодированным сертификатом,
во второй параметр мы передаем байтовый срез с PEM-кодированным приватным ключом.
Функция возвращает структуру tls.Certificate и ошибку, если парсинг не удался.
Синтаксис
tls.X509KeyPair(certPEM, keyPEM []byte) (tls.Certificate, error)
Пример с самоподписанным сертификатом
Давайте создадим пару сертификата и ключа в памяти с помощью функции X509KeyPair:
package main
import (
"crypto/tls"
"fmt"
"log"
)
func main() {
// PEM-кодированный сертификат (пример)
certPEM := []byte(`-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiUMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMjQwMTAxMDAwMDAwWhcNMjUwMTAxMDAwMDAwWjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAu7q5n4P5x8q7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9
m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7
n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9
m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7
n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9
m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7
n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9
QIDAQABo1AwTjAdBgNVHQ4EFgQUx8n7v9m7n8v9m7n8v9m7n8v9m7n8wHwYDVR0j
BBgwFoAUx8n7v9m7n8v9m7n8v9m7n8v9m7n8wDAYDVR0TBAUwAwEB/zANBgkqhkiG
9w0BAQsFAAOCAQEAx8n7v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
-----END CERTIFICATE-----`)
// PEM-кодированный приватный ключ (пример)
keyPEM := []byte(`-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAu7q5n4P5x8q7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7
n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m
7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8v9m7n8
-----END RSA PRIVATE KEY-----`)
// Загружаем пару сертификат-ключ
cert, err := tls.X509KeyPair(certPEM, keyPEM)
if err != nil {
log.Fatal(err)
}
// Проверяем, что сертификат загружен
fmt.Printf("Certificate loaded: %v\n", cert.Certificate != nil)
}
Результат выполнения кода:
"Certificate loaded: true"
Пример с использованием в TLS-конфигурации
Давайте используем загруженную пару в структуре tls.Config
для настройки HTTPS-сервера:
Мы используем cookie для работы сайта, аналитики и персонализации.
Обработка данных происходит согласно
Политике конфиденциальности.