Files
SamWaf/utils/sslutils.go
2025-06-25 11:04:31 +08:00

63 lines
1.5 KiB
Go

package utils
import (
"crypto/tls"
"crypto/x509"
"encoding/pem"
"fmt"
"strings"
)
// PrintSSLCert 打印证书信息
func PrintSSLCert(cert string) string {
result := ""
block, _ := pem.Decode([]byte(cert))
if block != nil {
cert, err := x509.ParseCertificate(block.Bytes)
if err == nil {
serialNo := cert.SerialNumber.String()
subject := cert.Subject.String()
issuer := cert.Issuer.String()
validFrom := cert.NotBefore
validTo := cert.NotAfter
domains := ""
if len(cert.DNSNames) > 0 {
for _, domain := range cert.DNSNames {
if domains != "" {
domains += ", "
}
domains += domain
}
} else {
domains = "未指定域名"
}
result = fmt.Sprintf("serialNo=%s subject=%s issuer=%s validFrom=%v validTo=%v domains=%s", serialNo, subject, issuer, validFrom, validTo, domains)
} else {
result = "格式错误2"
}
} else {
result = "格式错误"
}
return result
}
// TLSVersionMap maps string representations to tls version constants
var TLSVersionMap = map[string]uint16{
"SSLv3": tls.VersionSSL30, //这个已经废弃了
"TLS 1.0": tls.VersionTLS10,
"TLS 1.1": tls.VersionTLS11,
"TLS 1.2": tls.VersionTLS12,
"TLS 1.3": tls.VersionTLS13,
}
// ParseTLSVersion parses string like "TLS 1.2" into uint16 version constant
func ParseTLSVersion(ver string) uint16 {
ver = strings.TrimSpace(ver)
if v, ok := TLSVersionMap[ver]; ok {
return v
}
return tls.VersionTLS12 // Default to TLS 1.2 if not found
}