Junior — Middle
Raqamli sertifikatning qonuniyligini qanday tasdiqlash mumkin?
sobes.tech AI
AIdan javob
Go'da raqamli sertifikatning qonuniyligini tasdiqlash uchun odatda quyidagi bosqichlar bajariladi:
- Sertifikat imzosini tekshirish — sertifikat ishonchli sertifikat markazi (CA) tomonidan imzolanganligiga ishonch hosil qilish.
- Sertifikat zanjiri (zanjir validatsiyasi) — sertifikatdan to'rtinchi CA ga qadar zanjir to'g'ri va ishonchli ekanligini tekshirish.
- Amaldilik muddati tekshiruvi — sertifikat amal qilish muddati ichida bo'lishi kerak (muddati o'tmagan).
- Sertifikat bekor qilishini tekshirish — CRL yoki OCSP yordamida.
Go'da bu uchun crypto/x509 paketi ishlatiladi. Sertifikatni tekshirish misoli:
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("sertifikat PEM'ini tahlil qilishda xato")
}
cert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
return err
}
opts := x509.VerifyOptions{
Roots: roots,
}
_, err = cert.Verify(opts)
return err
}
Bu yerda, roots ishonchli asosiy sertifikatlar to'plami. Agar cert.Verify xato qaytarmasa, sertifikat qonuniy hisoblanadi.