Junior — Middle
Πώς μπορεί να επιβεβαιωθεί η νομιμότητα ενός ψηφιακού πιστοποιητικού;
sobes.tech AI
Απάντηση από AI
Για να επιβεβαιώσετε τη νομιμότητα ενός ψηφιακού πιστοποιητικού σε Go, συνήθως πραγματοποιούνται τα ακόλουθα βήματα:
- Έλεγχος υπογραφής πιστοποιητικού — βεβαιωθείτε ότι το πιστοποιητικό έχει υπογραφεί από μια αξιόπιστη αρχή πιστοποίησης (CA).
- Έλεγχος αλυσίδας πιστοποιητικών (επικύρωση αλυσίδας) — βεβαιωθείτε ότι η αλυσίδα από το πιστοποιητικό μέχρι την ρίζα CA είναι σωστή και αξιόπιστη.
- Έλεγχος περιόδου ισχύος — το πιστοποιητικό πρέπει να είναι έγκυρο (όχι ληγμένο).
- Έλεγχος ανάκλησης πιστοποιητικού — μέσω 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 δεν επιστρέψει σφάλμα, το πιστοποιητικό θεωρείται έγκυρο.