Ответ
Сертификаты в контексте TLS/SSL — это цифровые документы, подтверждающие подлинность сервера или клиента. Они содержат публичный ключ, информацию о владельце и подпись удостоверяющего центра (CA).
Пример самоподписанного сертификата в Go:
cert := &x509.Certificate{
SerialNumber: big.NewInt(1658),
Subject: pkix.Name{CommonName: "example.com"},
NotBefore: time.Now(),
NotAfter: time.Now().AddDate(1, 0, 0),
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
}
privKey, _ := rsa.GenerateKey(rand.Reader, 2048)
certBytes, _ := x509.CreateCertificate(rand.Reader, cert, cert, &privKey.PublicKey, privKey)
Ключевые моменты:
- Используются для шифрования (HTTPS, gRPC).
- Могут быть самоподписанными (для тестов) или выпущенными CA (Let's Encrypt, DigiCert).
- Включают срок действия, домен и цифровую подпись.