diff --git a/transport/internet/tls/config.go b/transport/internet/tls/config.go index daca8f16..71bd52ce 100644 --- a/transport/internet/tls/config.go +++ b/transport/internet/tls/config.go @@ -214,10 +214,10 @@ func getGetCertificateFunc(c *tls.Config, ca []*Certificate) func(hello *tls.Cli func getNewGetCertificateFunc(certs []*tls.Certificate, rejectUnknownSNI bool) func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { return func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { if len(certs) == 0 { - return nil, newError("empty certs") + return nil, errNoCertificates } sni := strings.ToLower(hello.ServerName) - if len(certs) == 1 || sni == "" { + if !rejectUnknownSNI && (len(certs) == 1 || sni == "") { return certs[0], nil } gsni := "*" diff --git a/transport/internet/xtls/config.go b/transport/internet/xtls/config.go index b74976cb..071bcc8f 100644 --- a/transport/internet/xtls/config.go +++ b/transport/internet/xtls/config.go @@ -215,10 +215,10 @@ func getGetCertificateFunc(c *xtls.Config, ca []*Certificate) func(hello *xtls.C func getNewGetCertificateFunc(certs []*xtls.Certificate, rejectUnknownSNI bool) func(hello *xtls.ClientHelloInfo) (*xtls.Certificate, error) { return func(hello *xtls.ClientHelloInfo) (*xtls.Certificate, error) { if len(certs) == 0 { - return nil, newError("empty certs") + return nil, errNoCertificates } sni := strings.ToLower(hello.ServerName) - if len(certs) == 1 || sni == "" { + if !rejectUnknownSNI && (len(certs) == 1 || sni == "") { return certs[0], nil } gsni := "*"