@@ -60,16 +60,14 @@ func CreateTLSConfig(address string, cfg *config.TLS) (*tls.Config, error) {
6060 if err != nil {
6161 return nil , err
6262 }
63-
64- if cfg .CaFile != "" || cfg .CaData != "" {
65- caCertPool , err := loadCACert (cfg )
63+ if ! cfg .DisableTLS {
64+ caPool , err = loadCACert (cfg )
6665 if err != nil {
6766 log .Fatalf ("Unable to load server CA certificate" )
6867 return nil , err
6968 }
70-
71- caPool = caCertPool
7269 }
70+
7371 if cfg .CertFile != "" || cfg .CertData != "" {
7472 keyPair , err := loadKeyPair (cfg )
7573 if err != nil {
@@ -111,44 +109,51 @@ func CreateTLSConfig(address string, cfg *config.TLS) (*tls.Config, error) {
111109}
112110
113111func loadCACert (cfg * config.TLS ) (caPool * x509.CertPool , err error ) {
114- pathOrUrl := cfg .CaFile
115- caData := cfg .CaData
116-
117- caPool = x509 .NewCertPool ()
118- var caBytes []byte
119112
120- if strings .HasPrefix (pathOrUrl , "http://" ) {
121- return nil , errors .New ("HTTP is not supported for CA cert URLs. Provide HTTPS URL" )
113+ caPool , err = x509 .SystemCertPool ()
114+ if err != nil {
115+ return nil , fmt .Errorf ("unable to load system CA cert pool: %v" , err )
122116 }
123117
124- if strings .HasPrefix (pathOrUrl , "https://" ) {
125- resp , err := netClient .Get (pathOrUrl )
126- if err != nil {
127- return nil , fmt .Errorf ("unable to load CA cert from URL: %v" , err )
128- }
129- defer resp .Body .Close ()
130- caBytes , err = io .ReadAll (resp .Body )
131- if err != nil {
132- return nil , fmt .Errorf ("unable to load CA cert from URL: %v" , err )
133- }
118+ // Append additional CA certs configured if provided
119+ if cfg .CaFile != "" || cfg .CaData != "" {
120+ pathOrUrl := cfg .CaFile
121+ caData := cfg .CaData
122+ var caBytes []byte
134123
135- log .Printf ("Loaded TLS CA cert from URL: %v" , pathOrUrl )
136- } else if pathOrUrl != "" {
137- caBytes , err = os .ReadFile (pathOrUrl )
138- if err != nil {
139- return nil , fmt .Errorf ("unable to load CA cert from file: %v" , err )
124+ if strings .HasPrefix (pathOrUrl , "http://" ) {
125+ return nil , errors .New ("HTTP is not supported for CA cert URLs. Provide HTTPS URL" )
140126 }
141- log .Printf ("Loaded TLS CA cert from file: %v" , pathOrUrl )
142- } else if caData != "" {
143- caBytes , err = base64 .StdEncoding .DecodeString (caData )
144- if err != nil {
145- return nil , fmt .Errorf ("unable to decode CA cert from base64: %v" , err )
127+
128+ if strings .HasPrefix (pathOrUrl , "https://" ) {
129+ resp , err := netClient .Get (pathOrUrl )
130+ if err != nil {
131+ return nil , fmt .Errorf ("unable to load CA cert from URL: %v" , err )
132+ }
133+ defer resp .Body .Close ()
134+ caBytes , err = io .ReadAll (resp .Body )
135+ if err != nil {
136+ return nil , fmt .Errorf ("unable to load CA cert from URL: %v" , err )
137+ }
138+
139+ log .Printf ("Loaded TLS CA cert from URL: %v" , pathOrUrl )
140+ } else if pathOrUrl != "" {
141+ caBytes , err = os .ReadFile (pathOrUrl )
142+ if err != nil {
143+ return nil , fmt .Errorf ("unable to load CA cert from file: %v" , err )
144+ }
145+ log .Printf ("Loaded TLS CA cert from file: %v" , pathOrUrl )
146+ } else if caData != "" {
147+ caBytes , err = base64 .StdEncoding .DecodeString (caData )
148+ if err != nil {
149+ return nil , fmt .Errorf ("unable to decode CA cert from base64: %v" , err )
150+ }
151+ log .Printf ("Loaded CA cert from base64" )
146152 }
147- log .Printf ("Loaded CA cert from base64" )
148- }
149153
150- if ! caPool .AppendCertsFromPEM (caBytes ) {
151- return nil , errors .New ("unknown failure constructing cert pool for ca" )
154+ if ! caPool .AppendCertsFromPEM (caBytes ) {
155+ return nil , errors .New ("unknown failure constructing cert pool for ca" )
156+ }
152157 }
153158 return caPool , nil
154159}
0 commit comments