This commit is contained in:
Fu Diwei
2025-12-27 19:52:42 +08:00
committed by RHQYZ
parent 13c2a97ff9
commit bb5c5ca143
2 changed files with 77 additions and 1 deletions
+20 -1
View File
@@ -3,10 +3,18 @@
import (
"crypto/x509"
"encoding/asn1"
"net"
)
var oidSubjectAlternativeNameExtension = asn1.ObjectIdentifier{2, 5, 29, 17}
const (
sanGeneralNameTagEmail = 1
sanGeneralNameTagDNS = 2
sanGeneralNameTagURI = 6
sanGeneralNameTagIP = 7
)
// 返回指定 x509.Certificate 对象的主题名称。
// 如果主题名称为空,则返回第一个主题替代名称。
//
@@ -55,7 +63,18 @@ func GetSubjectAltNames(cert *x509.Certificate) []string {
continue
}
sans = append(sans, string(seq.Bytes))
switch seq.Tag {
case sanGeneralNameTagIP:
// IPv4 地址需要单独处理,否则直接转换为字符串会得到乱码
var ip net.IP = seq.Bytes
sans = append(sans, ip.String())
case sanGeneralNameTagEmail, sanGeneralNameTagDNS, sanGeneralNameTagURI:
sans = append(sans, string(seq.Bytes))
default:
// 忽略其他非 Critical 的 GeneralName​
}
}
}
}