cert_info.go 785 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package cert
  2. import (
  3. "crypto/tls"
  4. "crypto/x509"
  5. "github.com/pkg/errors"
  6. "io"
  7. "log"
  8. "net"
  9. "net/http"
  10. "time"
  11. )
  12. func GetCertInfo(domain string) (key *x509.Certificate, err error) {
  13. var response *http.Response
  14. client := &http.Client{
  15. Transport: &http.Transport{
  16. DialContext: (&net.Dialer{
  17. Timeout: 5 * time.Second,
  18. }).DialContext,
  19. DisableKeepAlives: true,
  20. TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
  21. },
  22. Timeout: 5 * time.Second,
  23. }
  24. response, err = client.Get("https://" + domain)
  25. if err != nil {
  26. err = errors.Wrap(err, "get cert info error")
  27. return
  28. }
  29. defer func(Body io.ReadCloser) {
  30. err = Body.Close()
  31. if err != nil {
  32. log.Println(err)
  33. return
  34. }
  35. }(response.Body)
  36. key = response.TLS.PeerCertificates[0]
  37. return
  38. }