Wie extrahiere ich den vollständigen Subject Distinguished Name aus einem X.509-Zertifikat in Go?

DDD
Freigeben: 2024-11-01 02:18:02
Original
339 Leute haben es durchsucht

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

So extrahieren Sie den vollständigen Betreff-DN aus X509-Zertifikaten in Go

Beziehen des Betreff-DN (Distinguished Name) oder Aussteller-DN aus einem X509-Zertifikat in Go als Saite kann eine Herausforderung sein. Es gibt jedoch eine praktische Methode, die diese Aufgabe vereinfachen kann.

Lösung

Dank der Beiträge eines Kollegen wurde eine benutzerdefinierte Funktion namens getDNFromCert zum Extrahieren entwickelt den vollständigen DN aus einem X509-Zertifikat. Diese Funktion verwendet einen pkix.Name-Namespace als Eingabe und gibt eine Zeichenfolgendarstellung des DN zurück:

<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>
Nach dem Login kopieren

Verwenden der Funktion

Um den Betreff-DN aus einem zu extrahieren Für ein X509-Zertifikat mit dem Namen x509Cert können Sie die Funktion getDNFromCert wie folgt aufrufen:

<code class="go">subj, err := getDNFromCert(x509Cert.Subject, "/")
if err != nil {
    // Do error handling
}
fmt.Println(subj)</code>
Nach dem Login kopieren

Beispielausgabe

Für ein Beispielzertifikat mit dem folgenden Betreff-DN:

CN=common name,OU=unit,O=some organization,C=US
Nach dem Login kopieren

Die Funktion getDNFromCert gibt die folgende Zeichenfolge zurück:

/C=US/O=some organization/OU=unit/CN=common name
Nach dem Login kopieren

Diese Methode bietet eine einfache und effiziente Möglichkeit, den vollständigen Betreff- oder Aussteller-DN aus einem X509-Zertifikat in Go zu extrahieren. Dies vereinfacht die Aufgabe und macht eine manuelle Zeichenfolgenmanipulation überflüssig.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich den vollständigen Subject Distinguished Name aus einem X.509-Zertifikat in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage