What version of Go are you using (go version)?
$ go version
go version go1.11.2 darwin/amd64
What did you do?
Assume that I have a valid tls.Config (with Certificates set), saved in the variable conf.
Then I can start listening on a new connection by running
tls.Listen("tcp", "locahost:0", conf)
Now I want to build a more sophisticated tls.Config, which in the simplest case takes the following form
c := &tls.Config{
GetConfigForClient: func(*tls.ClientHelloInfo) (*tls.Config, error) {
return conf, nil
},
}
Now
tls.Listen("tcp", "locahost:0", c)
returns tls: neither Certificates nor GetCertificate set in Config.
What did you expect to see?
tls.Listen should accept a tls.Config that has GetConfigForClient set, even if Certificates and GetCertificate is not set.
It should use the tls.Config returned by that callback, and close the connection with an error in case the returned tls.Config is nil or doesn't have any certificate configured, depending on the SNI.
What did you see instead?
tls.Listen didn't accept the tls.Config and returned an error.
What version of Go are you using (
go version)?What did you do?
Assume that I have a valid
tls.Config(withCertificatesset), saved in the variableconf.Then I can start listening on a new connection by running
Now I want to build a more sophisticated
tls.Config, which in the simplest case takes the following formNow
returns
tls: neither Certificates nor GetCertificate set in Config.What did you expect to see?
tls.Listenshould accept atls.Configthat hasGetConfigForClientset, even ifCertificatesandGetCertificateis not set.It should use the
tls.Configreturned by that callback, and close the connection with an error in case the returnedtls.Configisnilor doesn't have any certificate configured, depending on the SNI.What did you see instead?
tls.Listendidn't accept thetls.Configand returned an error.