Junior — Middle
Как може да се потвърди легитимността на цифров сертификат?
sobes.tech AI
Отговор от AI
За да потвърдите легитимността на цифров сертификат в Go, обикновено се изпълняват следните стъпки:
- Проверка на подписа на сертификата — уверете се, че сертификатът е подписан от доверен център за сертификати (CA).
- Проверка на веригата от сертификати (валидация на веригата) — уверете се, че веригата от сертификата до кореновия CA е правилна и доверена.
- Проверка на срока на валидност — сертификатът трябва да е валиден (не изтекъл).
- Проверка за отмяна на сертификата — чрез 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 не върне грешка, сертификатът се счита за легитимен.