从 Go 中的 X509 证书检索完整的主题或颁发者 DN
从 X509 证书检索完整的主题或颁发者可分辨名称 (DN)作为字符串,只需几个步骤即可完成。
解决方案详细信息:
将 OID 映射到属性名称:
将 RDNSequence 转换为字符串:
构建主题 DN 字符串:
调用函数:
用法示例:
<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中文网其他相关文章!