Sobes.tech
Назад к вопросам
Junior — Middle
80

Каким образом можно подтвердить легитимность цифрового сертификата?

Ответ от нейросети

sobes.tech AI

Для подтверждения легитимности цифрового сертификата в Go обычно выполняют следующие шаги:

  1. Проверка подписи сертификата — удостовериться, что сертификат подписан доверенным центром сертификации (CA).
  2. Проверка цепочки сертификатов (chain validation) — убедиться, что цепочка от сертификата до корневого CA корректна и доверена.
  3. Проверка срока действия — сертификат должен быть действующим (не просроченным).
  4. Проверка отзыва сертификата — с помощью CRL или OCSP.

В Go для этого используется пакет crypto/x509. Пример проверки сертификата:

import (
    "crypto/x509"
    "encoding/pem"
    "io/ioutil"
    "log"
)

func verifyCert(certPEM []byte, roots *x509.CertPool) error {
    block, _ := pem.Decode(certPEM)
    if block == nil {
        return fmt.Errorf("failed to parse certificate PEM")
    }
    cert, err := x509.ParseCertificate(block.Bytes)
    if err != nil {
        return err
    }

    opts := x509.VerifyOptions{
        Roots: roots,
    }

    _, err = cert.Verify(opts)
    return err
}

Здесь roots — это набор доверенных корневых сертификатов. Если cert.Verify не возвращает ошибку, сертификат считается легитимным.