Sobes.tech
Junior — Middle

Como pode ser confirmada a legitimidade de um certificado digital?

sobes.tech IA

Resposta da IA

Para confirmar a legitimidade de um certificado digital em Go, normalmente realiza-se os seguintes passos:

  1. Verificação da assinatura do certificado — garantir que o certificado seja assinado por uma autoridade de certificação (CA) confiável.
  2. Verificação da cadeia de certificados (validação de cadeia) — garantir que a cadeia desde o certificado até à CA raiz seja correta e confiável.
  3. Verificação do período de validade — o certificado deve estar válido (não expirado).
  4. Verificação da revogação do certificado — usando CRL ou OCSP.

Em Go, para isso, usa-se o pacote crypto/x509. Exemplo de verificação de certificado:

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("falha ao analisar o PEM do certificado")
    }
    cert, err := x509.ParseCertificate(block.Bytes)
    if err != nil {
        return err
    }

    opts := x509.VerifyOptions{
        Roots: roots,
    }

    _, err = cert.Verify(opts)
    return err
}

Aqui, roots é um conjunto de certificados raiz confiáveis. Se cert.Verify não retornar erro, o certificado é considerado legítimo.