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:
- Verificação da assinatura do certificado — garantir que o certificado seja assinado por uma autoridade de certificação (CA) confiável.
- 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.
- Verificação do período de validade — o certificado deve estar válido (não expirado).
- 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.