diff --git a/plugins/inputs/x509_cert/README.md b/plugins/inputs/x509_cert/README.md index 781b9332a..82fe520f9 100644 --- a/plugins/inputs/x509_cert/README.md +++ b/plugins/inputs/x509_cert/README.md @@ -10,7 +10,7 @@ file or network connection. # Reads metrics from a SSL certificate [[inputs.x509_cert]] ## List certificate sources - sources = ["/etc/ssl/certs/ssl-cert-snakeoil.pem", "https://example.org"] + sources = ["/etc/ssl/certs/ssl-cert-snakeoil.pem", "https://example.org:443"] ## Timeout for SSL connection # timeout = "5s" diff --git a/plugins/inputs/x509_cert/dev/telegraf.conf b/plugins/inputs/x509_cert/dev/telegraf.conf new file mode 100644 index 000000000..1eda94f02 --- /dev/null +++ b/plugins/inputs/x509_cert/dev/telegraf.conf @@ -0,0 +1,5 @@ +[[inputs.x509_cert]] + sources = ["https://www.influxdata.com:443"] + +[[outputs.file]] + files = ["stdout"] diff --git a/plugins/inputs/x509_cert/x509_cert.go b/plugins/inputs/x509_cert/x509_cert.go index affd3fa04..45eddf3aa 100644 --- a/plugins/inputs/x509_cert/x509_cert.go +++ b/plugins/inputs/x509_cert/x509_cert.go @@ -80,7 +80,10 @@ func (c *X509Cert) getCert(location string, timeout time.Duration) ([]*x509.Cert } defer ipConn.Close() - tlsCfg.ServerName = u.Host + if tlsCfg == nil { + tlsCfg = &tls.Config{} + } + tlsCfg.ServerName = u.Hostname() conn := tls.Client(ipConn, tlsCfg) defer conn.Close() diff --git a/plugins/inputs/x509_cert/x509_cert_test.go b/plugins/inputs/x509_cert/x509_cert_test.go index f4c6c8738..fc75bc825 100644 --- a/plugins/inputs/x509_cert/x509_cert_test.go +++ b/plugins/inputs/x509_cert/x509_cert_test.go @@ -4,6 +4,8 @@ import ( "crypto/tls" "encoding/base64" "fmt" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "io/ioutil" "os" "testing" @@ -203,3 +205,19 @@ func TestStrings(t *testing.T) { }) } } + +func TestGatherCert(t *testing.T) { + if testing.Short() { + t.Skip("Skipping integration test in short mode") + } + + m := &X509Cert{ + Sources: []string{"https://www.influxdata.com:443"}, + } + + var acc testutil.Accumulator + err := m.Gather(&acc) + require.NoError(t, err) + + assert.True(t, acc.HasMeasurement("x509_cert")) +}