Maison > développement back-end > Golang > le corps du texte

Comment extraire le nom distinctif complet du sujet d'un certificat X.509 dans Go ?

DDD
Libérer: 2024-11-01 02:18:02
original
341 Les gens l'ont consulté

How to Extract the Full Subject Distinguished Name from an X.509 Certificate in Go?

Comment extraire le DN complet du sujet des certificats X509 dans Go

Obtention du DN du sujet (nom distinctif) ou du DN de l'émetteur à partir d'un certificat X509 dans Go, une chaîne peut être un défi. Il existe cependant une méthode pratique qui peut simplifier cette tâche.

Solution

Grâce aux contributions d'un collègue, une fonction personnalisée appelée getDNFromCert a été développée pour extraire le DN complet à partir d’un certificat X509. Cette fonction prend un espace de noms pkix.Name en entrée et renvoie une représentation sous forme de chaîne du DN :

<code class="go">func getDNFromCert(namespace pkix.Name, sep string) (string, error) {
    subject := []string{}
    for _, s := range namespace.ToRDNSequence() {
        for _, i := range s {
            if v, ok := i.Value.(string); ok {
                if name, ok := oid[i.Type.String()]; ok {
                    // <oid name>=<value>
                    subject = append(subject, fmt.Sprintf("%s=%s", name, v))
                } else {
                    // <oid>=<value> if no <oid name> is found
                    subject = append(subject, fmt.Sprintf("%s=%s", i.Type.String(), v))
                }
            } else {
                // <oid>=<value in default format> if value is not string
                subject = append(subject, fmt.Sprintf("%s=%v", i.Type.String, v))
            }
        }
    }
    return sep + strings.Join(subject, sep), nil
}</code>
Copier après la connexion

Utilisation de la fonction

Pour extraire le DN du sujet d'un Certificat X509 nommé x509Cert, vous pouvez appeler la fonction getDNFromCert comme suit :

<code class="go">subj, err := getDNFromCert(x509Cert.Subject, "/")
if err != nil {
    // Do error handling
}
fmt.Println(subj)</code>
Copier après la connexion

Exemple de sortie

Pour un exemple de certificat avec le sujet DN suivant :

CN=common name,OU=unit,O=some organization,C=US
Copier après la connexion

La fonction getDNFromCert renverra la chaîne suivante :

/C=US/O=some organization/OU=unit/CN=common name
Copier après la connexion

Cette méthode fournit un moyen simple et efficace d'extraire le DN complet du sujet ou de l'émetteur d'un certificat X509 dans Go. Cela simplifie la tâche et élimine le besoin de manipulation manuelle des chaînes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal