Heim > Artikel > Backend-Entwicklung > Wie extrahiere ich den vollständigen Subject Distinguished Name aus einem X.509-Zertifikat 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>
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>
Beispielausgabe
Für ein Beispielzertifikat mit dem folgenden Betreff-DN:
CN=common name,OU=unit,O=some organization,C=US
Die Funktion getDNFromCert gibt die folgende Zeichenfolge zurück:
/C=US/O=some organization/OU=unit/CN=common name
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!