Что такое сертификаты

«Что такое сертификаты» — вопрос из категории Безопасность, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сертификаты в контексте 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).
  • Включают срок действия, домен и цифровую подпись.