diff --git a/pkg/models/datasource_cache.go b/pkg/models/datasource_cache.go
index 158018b0f0a..14d3c6c2fc1 100644
--- a/pkg/models/datasource_cache.go
+++ b/pkg/models/datasource_cache.go
@@ -47,8 +47,7 @@ func (ds *DataSource) GetHttpTransport() (*http.Transport, error) {
transport := &http.Transport{
TLSClientConfig: &tls.Config{
- InsecureSkipVerify: true,
- Renegotiation: tls.RenegotiateFreelyAsClient,
+ Renegotiation: tls.RenegotiateFreelyAsClient,
},
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
@@ -62,15 +61,13 @@ func (ds *DataSource) GetHttpTransport() (*http.Transport, error) {
IdleConnTimeout: 90 * time.Second,
}
- var tlsAuth, tlsAuthWithCACert bool
+ var tlsClientAuth, tlsAuthWithCACert bool
if ds.JsonData != nil {
- tlsAuth = ds.JsonData.Get("tlsAuth").MustBool(false)
+ tlsClientAuth = ds.JsonData.Get("tlsClientAuth").MustBool(false)
tlsAuthWithCACert = ds.JsonData.Get("tlsAuthWithCACert").MustBool(false)
}
- if tlsAuth {
- transport.TLSClientConfig.InsecureSkipVerify = false
-
+ if tlsClientAuth || tlsAuthWithCACert {
decrypted := ds.SecureJsonData.Decrypt()
if tlsAuthWithCACert && len(decrypted["tlsCACert"]) > 0 {
@@ -81,11 +78,13 @@ func (ds *DataSource) GetHttpTransport() (*http.Transport, error) {
}
}
- cert, err := tls.X509KeyPair([]byte(decrypted["tlsClientCert"]), []byte(decrypted["tlsClientKey"]))
- if err != nil {
- return nil, err
+ if tlsClientAuth {
+ cert, err := tls.X509KeyPair([]byte(decrypted["tlsClientCert"]), []byte(decrypted["tlsClientKey"]))
+ if err != nil {
+ return nil, err
+ }
+ transport.TLSClientConfig.Certificates = []tls.Certificate{cert}
}
- transport.TLSClientConfig.Certificates = []tls.Certificate{cert}
}
ptc.cache[ds.Id] = cachedTransport{
diff --git a/pkg/models/datasource_cache_test.go b/pkg/models/datasource_cache_test.go
index 8b36cc68e2a..bbd1c563ad1 100644
--- a/pkg/models/datasource_cache_test.go
+++ b/pkg/models/datasource_cache_test.go
@@ -36,7 +36,7 @@ func TestDataSourceCache(t *testing.T) {
setting.SecretKey = "password"
json := simplejson.New()
- json.Set("tlsAuth", true)
+ json.Set("tlsClientAuth", true)
json.Set("tlsAuthWithCACert", true)
t := time.Now()
@@ -49,8 +49,8 @@ func TestDataSourceCache(t *testing.T) {
transport, err := ds.GetHttpTransport()
So(err, ShouldBeNil)
- Convey("Should disable TLS certificate verification", func() {
- So(transport.TLSClientConfig.InsecureSkipVerify, ShouldEqual, true)
+ Convey("Should verify TLS certificates by default", func() {
+ So(transport.TLSClientConfig.InsecureSkipVerify, ShouldEqual, false)
})
ds.JsonData = json
@@ -69,7 +69,7 @@ func TestDataSourceCache(t *testing.T) {
transport, err = ds.GetHttpTransport()
So(err, ShouldBeNil)
- Convey("Should add cert and enable TLS certificate verification", func() {
+ Convey("Should add cert and verify TLS certificates", func() {
So(transport.TLSClientConfig.InsecureSkipVerify, ShouldEqual, false)
So(len(transport.TLSClientConfig.Certificates), ShouldEqual, 1)
})
@@ -81,8 +81,8 @@ func TestDataSourceCache(t *testing.T) {
transport, err = ds.GetHttpTransport()
So(err, ShouldBeNil)
- Convey("Should remove cert and disable TLS certificate vertification", func() {
- So(transport.TLSClientConfig.InsecureSkipVerify, ShouldEqual, true)
+ Convey("Should remove cert but still verify TLS certificates", func() {
+ So(transport.TLSClientConfig.InsecureSkipVerify, ShouldEqual, false)
So(len(transport.TLSClientConfig.Certificates), ShouldEqual, 0)
})
})
diff --git a/public/app/features/plugins/partials/ds_http_settings.html b/public/app/features/plugins/partials/ds_http_settings.html
index d10b8cbf9bc..6ea3a3cde1a 100644
--- a/public/app/features/plugins/partials/ds_http_settings.html
+++ b/public/app/features/plugins/partials/ds_http_settings.html
@@ -44,7 +44,7 @@