Junior — Middle
როგორ შეიძლება დადასტურდეს ციფრული სერთიფიკატის ლეგიტიმურობა?
sobes.tech AI
პასუხი AI-სგან
Go-ში ციფრული სერთიფიკატის ლეგიტიმურობის დასადასტურებლად ჩვეულებრივ, შემდეგი ნაბიჯები ხორციელდება:
- სერთიფიკატის ხელმოწერის შემოწმება — დარწმუნდით, რომ სერთიფიკატი ხელმოწერილია სანდო სერტიფიკატორული ცენტრის (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 არ დაბრუნებს შეცდომას, სერთიფიკატი მიიჩნევა ლეგიტიმურად.