


Wie extrahiere ich den vollständigen Betreff- oder Aussteller-DN aus einem X509-Zertifikat in Go?
Oct 31, 2024 pm 12:25 PMVollständigen Betreff oder Aussteller-DN aus X509-Zertifikat in Go abrufen
Abrufen des vollständigen Betreffs oder Aussteller-DN (Distinguished Name) aus einem X509-Zertifikat als Zeichenfolge kann mit wenigen Schritten erreicht werden.
Lösungsdetails:
-
OIDs zu Attributnamen zuordnen:
- Erstellen Sie eine Karte, um OIDs (Objektkennungen) mit Attributnamen zu verknüpfen.
-
RDNSequence in String konvertieren:
- Konvertieren Sie die RDNSequence (Relative Distinguished Name Sequence) in einen Abschnitt von Zeichenfolgen, wobei jede Zeichenfolge ein Attribut darstellt (z. B. „CN=Common Name“).
-
Betreff-DN-Zeichenfolge erstellen:
- Iterieren Sie über das Zeichenfolgensegment und erstellen Sie die Betreff-DN-Zeichenfolge, indem Sie die Attributnamen und -werte verketten.
-
Funktion aufrufen:
- Rufen Sie die Funktion getDNFromCert mit dem Zertifikatsbetreff oder -aussteller als Argument auf.
Beispielverwendung:
<code class="go">func main() { // Obtain the X509 certificate x509Cert, err := LoadCert(pemBytes) if err != nil { // Handle error } // Retrieve subject DN subj, err := getDNFromCert(x509Cert.Subject, "/") if err != nil { // Handle error } fmt.Println("Subject DN:", subj) }</code>
Funktionsdefinition:
<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 { subject = append(subject, fmt.Sprintf("%v=%v", i.Type.String(), v)) } else { subject = append(subject, fmt.Sprintf("%v=%v", i.Type.String(), i.Value)) } } } return sep + strings.Join(subject, sep), nil }</code>
Erwartete Ausgabe:
Subject DN: /C=US/O=some organization/OU=unit/CN=common name
Das obige ist der detaillierte Inhalt vonWie extrahiere ich den vollständigen Betreff- oder Aussteller-DN aus einem X509-Zertifikat in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibe ich Dateien in Go Language bequem?

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern?
