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