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 {
    block, _ := pem.Decode(certPEM)
    if block == nil {
        return fmt.Errorf("αποτυχία ανάλυσης του 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 δεν επιστρέψει σφάλμα, το πιστοποιητικό θεωρείται έγκυρο.