in pulsar/internal/connection.go [1087:1139]
func (c *connection) getTLSConfig() (*tls.Config, error) {
if c.tlsOptions.TLSConfig != nil {
return c.tlsOptions.TLSConfig, nil
}
tlsConfig := &tls.Config{
InsecureSkipVerify: c.tlsOptions.AllowInsecureConnection,
CipherSuites: c.tlsOptions.CipherSuites,
MinVersion: c.tlsOptions.MinVersion,
MaxVersion: c.tlsOptions.MaxVersion,
}
if c.tlsOptions.TrustCertsFilePath != "" {
caCerts, err := os.ReadFile(c.tlsOptions.TrustCertsFilePath)
if err != nil {
return nil, err
}
tlsConfig.RootCAs = x509.NewCertPool()
ok := tlsConfig.RootCAs.AppendCertsFromPEM(caCerts)
if !ok {
return nil, errors.New("failed to parse root CAs certificates")
}
}
if c.tlsOptions.ValidateHostname {
if c.tlsOptions.ServerName != "" {
tlsConfig.ServerName = c.tlsOptions.ServerName
} else {
tlsConfig.ServerName = c.physicalAddr.Hostname()
}
c.log.Debugf("getTLSConfig(): setting tlsConfig.ServerName = %+v", tlsConfig.ServerName)
}
if c.tlsOptions.CertFile != "" && c.tlsOptions.KeyFile != "" {
cert, err := tls.LoadX509KeyPair(c.tlsOptions.CertFile, c.tlsOptions.KeyFile)
if err != nil {
return nil, errors.New(err.Error())
}
tlsConfig.Certificates = []tls.Certificate{cert}
}
cert, err := c.auth.GetTLSCertificate()
if err != nil {
return nil, err
}
if cert != nil {
tlsConfig.Certificates = []tls.Certificate{*cert}
}
return tlsConfig, nil
}