Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

За да потвърдите легитимността на цифров сертификат в Go, обикновено се изпълняват следните стъпки:

  1. Проверка на подписа на сертификата — уверете се, че сертификатът е подписан от доверен център за сертификати (CA).
  2. Проверка на веригата от сертификати (валидация на веригата) — уверете се, че веригата от сертификата до кореновия CA е правилна и доверена.
  3. Проверка на срока на валидност — сертификатът трябва да е валиден (не изтекъл).
  4. Проверка за отмяна на сертификата — чрез CRL или OCSP.

В Go за това се използва пакетът crypto/x509. Пример за проверка на сертификат:

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

func verifyCert(certPEM []byte, roots *x509.CertPool) error {
    блок, _ := pem.Decode(certPEM)
    if блок == nil {
        return fmt.Errorf("грешка при парсиране на PEM на сертификата")
    }
    cert, err := x509.ParseCertificate(блок.Bytes)
    if err != nil {
        return err
    }

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

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

Тук roots е набор от доверени коренови сертификати. Ако cert.Verify не върне грешка, сертификатът се счита за легитимен.