Go で X509 証明書から完全なサブジェクトまたは発行者 DN を取得する
X509 証明書から完全なサブジェクトまたは発行者識別名 (DN) を取得する文字列はいくつかのメソッドを使用して実現できるため、
ソリューションの詳細:
OID を属性名にマップ:
RDNSequence を文字列に変換します:
Build Subject DN String:
関数の呼び出し:
使用例:
<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>
関数定義:
<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>
期待通り出力:
Subject DN: /C=US/O=some organization/OU=unit/CN=common name
以上がGo で X509 証明書から完全なサブジェクトまたは発行者 DN を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。