Sobes.tech
Junior — Middle

Ինչպե՞ս կարող ենք հաստատել թվային վկայականի օրինականությունը։

sobes.tech AI

Պատասխան AI-ից

Go-ում թվային սերտիֆիկատի օրինականությունը հաստատելու համար սովորաբար կատարվում են հետևյալ քայլերը՝

  1. Սերտիֆիկատի ստորագրության ստուգում — համոզվեք, որ սերտիֆիկատը ստորագրված է վստահելի սերտիֆիկատային կենտրոնի (CA) կողմից:
  2. Սերտիֆիկատների շղթայի (շղթայի վավերացում) — համոզվեք, որ սերտիֆիկատից մինչև արմատ CA-ն շղթան ճիշտ և վստահելի է:
  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 սխալ չվերադարձնի, սերտիֆիկատը համարվում է օրինական։