55 "crypto/ecdsa"
66 "crypto/elliptic"
77 "crypto/rand"
8- "crypto/tls"
98 "crypto/x509"
109 "github.com/0xJacky/Nginx-UI/server/model"
1110 "github.com/0xJacky/Nginx-UI/server/settings"
@@ -15,9 +14,11 @@ import (
1514 "github.com/go-acme/lego/v4/challenge/http01"
1615 "github.com/go-acme/lego/v4/lego"
1716 "github.com/go-acme/lego/v4/registration"
17+ "github.com/pkg/errors"
1818 "io"
1919 "io/ioutil"
2020 "log"
21+ "net"
2122 "net/http"
2223 "os"
2324 "path/filepath"
@@ -70,15 +71,20 @@ func GetCertInfo(domain string) (key *x509.Certificate, err error) {
7071
7172 var response * http.Response
7273
73- ts := & http.Transport {
74- TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
74+ client := & http.Client {
75+ Transport : & http.Transport {
76+ DialContext : (& net.Dialer {
77+ Timeout : 5 * time .Second ,
78+ }).DialContext ,
79+ DisableKeepAlives : true ,
80+ },
81+ Timeout : 5 * time .Second ,
7582 }
7683
77- client := & http.Client {Transport : ts }
78-
7984 response , err = client .Get ("https://" + domain )
8085
8186 if err != nil {
87+ err = errors .Wrap (err , "get cert info error" )
8288 return
8389 }
8490
@@ -99,8 +105,7 @@ func IssueCert(domain string) error {
99105 // Create a user. New accounts need an email and private key to start.
100106 privateKey , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
101107 if err != nil {
102- log .Println (err )
103- return err
108+ return errors .Wrap (err , "issue cert generate key error" )
104109 }
105110
106111 myUser := MyUser {
@@ -118,8 +123,7 @@ func IssueCert(domain string) error {
118123 // A client facilitates communication with the CA server.
119124 client , err := lego .NewClient (config )
120125 if err != nil {
121- log .Println (err )
122- return err
126+ return errors .Wrap (err , "issue cert new client error" )
123127 }
124128
125129 err = client .Challenge .SetHTTP01Provider (
@@ -128,15 +132,14 @@ func IssueCert(domain string) error {
128132 ),
129133 )
130134 if err != nil {
131- log .Println (err )
132- return err
135+ return errors .Wrap (err , "issue cert challenge fail" )
133136 }
134137
135138 // New users will need to register
136139 reg , err := client .Registration .Register (registration.RegisterOptions {TermsOfServiceAgreed : true })
137140 if err != nil {
138141 log .Println (err )
139- return err
142+ return errors . Wrap ( err , "issue cert register fail" )
140143 }
141144 myUser .Registration = reg
142145
@@ -146,15 +149,13 @@ func IssueCert(domain string) error {
146149 }
147150 certificates , err := client .Certificate .Obtain (request )
148151 if err != nil {
149- log .Println (err )
150- return err
152+ return errors .Wrap (err , "issue cert fail to obtain" )
151153 }
152154 saveDir := nginx .GetNginxConfPath ("ssl/" + domain )
153155 if _ , err := os .Stat (saveDir ); os .IsNotExist (err ) {
154156 err = os .Mkdir (saveDir , 0755 )
155157 if err != nil {
156- log .Println ("fail to create" , saveDir )
157- return err
158+ return errors .Wrap (err , "issue cert fail to create" )
158159 }
159160 }
160161
@@ -164,13 +165,13 @@ func IssueCert(domain string) error {
164165 certificates .Certificate , 0644 )
165166 if err != nil {
166167 log .Println (err )
167- return err
168+ return errors . Wrap ( err , "issue cert write fullchain.cer fail" )
168169 }
169170 err = ioutil .WriteFile (filepath .Join (saveDir , domain + ".key" ),
170171 certificates .PrivateKey , 0644 )
171172 if err != nil {
172173 log .Println (err )
173- return err
174+ return errors . Wrap ( err , "issue cert write key fail" )
174175 }
175176
176177 nginx .ReloadNginx ()
0 commit comments