mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
package sqlstore
 | 
						|
 | 
						|
import (
 | 
						|
	"crypto/tls"
 | 
						|
	"crypto/x509"
 | 
						|
	"fmt"
 | 
						|
	"io/ioutil"
 | 
						|
)
 | 
						|
 | 
						|
func makeCert(tlsPoolName string, config MySQLConfig) (*tls.Config, error) {
 | 
						|
	rootCertPool := x509.NewCertPool()
 | 
						|
	pem, err := ioutil.ReadFile(config.CaCertPath)
 | 
						|
	if err != nil {
 | 
						|
		return nil, fmt.Errorf("Could not read DB CA Cert path: %v", config.CaCertPath)
 | 
						|
	}
 | 
						|
	if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	clientCert := make([]tls.Certificate, 0, 1)
 | 
						|
	if config.ClientCertPath != "" && config.ClientKeyPath != "" {
 | 
						|
 | 
						|
		certs, err := tls.LoadX509KeyPair(config.ClientCertPath, config.ClientKeyPath)
 | 
						|
		if err != nil {
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
		clientCert = append(clientCert, certs)
 | 
						|
	}
 | 
						|
	tlsConfig := &tls.Config{
 | 
						|
		RootCAs:      rootCertPool,
 | 
						|
		Certificates: clientCert,
 | 
						|
	}
 | 
						|
	tlsConfig.ServerName = config.ServerCertName
 | 
						|
	if config.SslMode == "skip-verify" {
 | 
						|
		tlsConfig.InsecureSkipVerify = true
 | 
						|
	}
 | 
						|
	// Return more meaningful error before it is too late
 | 
						|
	if config.ServerCertName == "" && !tlsConfig.InsecureSkipVerify {
 | 
						|
		return nil, fmt.Errorf("server_cert_name is missing. Consider using ssl_mode = skip-verify.")
 | 
						|
	}
 | 
						|
	return tlsConfig, nil
 | 
						|
}
 |