2
A
回答
3
解决方案(感谢同事):
var oid = map[string]string{
"2.5.4.3": "CN",
"2.5.4.4": "SN",
"2.5.4.5": "serialNumber",
"2.5.4.6": "C",
"2.5.4.7": "L",
"2.5.4.8": "ST",
"2.5.4.9": "streetAddress",
"2.5.4.10": "O",
"2.5.4.11": "OU",
"2.5.4.12": "title",
"2.5.4.17": "postalCode",
"2.5.4.42": "GN",
"2.5.4.43": "initials",
"2.5.4.44": "generationQualifier",
"2.5.4.46": "dnQualifier",
"2.5.4.65": "pseudonym",
"0.9.2342.19200300.100.1.25": "DC",
"1.2.840.113549.1.9.1": "emailAddress",
"0.9.2342.19200300.100.1.1": "userid",
}
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
}
调用该函数:
subj, err := getDNFromCert(x509Cert.Subject, "/")
if err != nil {
// do error handling
}
fmt.Println(subj)
输出(示例):
/C=US/O=some organization/OU=unit/CN=common name
这似乎是唯一的“易”解决方案
相关问题
- 1. X509证书与主题UID
- 2. 使用openssl在X509证书中添加DN主题备用名称扩展
- 3. X509证书:DN的标识(标识名称)
- 4. 为X509证书
- 5. 请求X509证书
- 6. 解析X509证书
- 7. 解析X509证书
- 8. x509证书信息
- 9. X509证书格式
- 10. 打开X509证书
- 11. 我们可以找回序列号,发行者DN,主题一个X509证书的IOS SDK iphone详细
- 12. 阅读X509证书来处理它
- 13. x509证书验证C
- 14. x509证书为byte []在Java和回X509证书在C#
- 15. Kubernetes集群X509:荣誉证书问题
- 16. Ansible X509证书丢失主题备用名称
- 17. x509证书中的主题属性的顺序
- 18. 如何找到x509证书的主题名称?
- 19. JSCEP与x509证书和属性证书
- 20. 信任所有证书? X509证书
- 21. OpenSSL自动生成x509证书
- 22. 打印X509证书C++
- 23. 已撤销X509证书
- 24. X509证书多密码?
- 25. 错误加载X509证书
- 26. X509证书文件检查
- 27. rsacryptoserviceprovider使用x509证书c#
- 28. X509证书目的设置
- 29. X509证书公钥加密
- 30. 检查X509证书吊销