Sobes.tech
Junior — Middle

როგორ შეიძლება დადასტურდეს ციფრული სერთიფიკატის ლეგიტიმურობა?

sobes.tech AI

პასუხი AI-სგან

Go-ში ციფრული სერთიფიკატის ლეგიტიმურობის დასადასტურებლად ჩვეულებრივ, შემდეგი ნაბიჯები ხორციელდება:

  1. სერთიფიკატის ხელმოწერის შემოწმება — დარწმუნდით, რომ სერთიფიკატი ხელმოწერილია სანდო სერტიფიკატორული ცენტრის (CA) მიერ.
  2. სერთიფიკატების ჯაჭვის (ჯაჭვის ვალიდაცია) — დარწმუნდით, რომ სერთიფიკატიდან კერამდე ჯაჭვი სწორია და სანდოა.
  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 არ დაბრუნებს შეცდომას, სერთიფიკატი მიიჩნევა ლეგიტიმურად.