mirror of
https://gitee.com/samwaf/SamWaf.git
synced 2025-12-06 14:59:18 +08:00
63 lines
1.5 KiB
Go
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
|
|
}
|