Skip to content

Commit 839619b

Browse files
authored
Merge pull request #11 from Snawoot/fix_cert_auth
fix cert auth
2 parents d0c1dec + 2e2f2c2 commit 839619b

2 files changed

Lines changed: 25 additions & 4 deletions

File tree

main.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,11 @@ func run() int {
155155

156156
mainLogger.Info("Starting proxy server...")
157157
if args.cert != "" {
158-
cfg, err1 := makeServerTLSConfig(args.cert, args.key, args.cafile)
158+
cfg, err1 := makeServerTLSConfig(args.cert, args.key, args.cafile, args.ciphers)
159159
if err1 != nil {
160160
mainLogger.Critical("TLS config construction failed: %v", err1)
161161
return 3
162162
}
163-
cfg.CipherSuites = makeCipherList(args.ciphers)
164163
server.TLSConfig = cfg
165164
err = server.ListenAndServeTLS("", "")
166165
} else if args.autocert {
@@ -180,7 +179,11 @@ func run() int {
180179
}()
181180
}
182181
cfg := m.TLSConfig()
183-
cfg.CipherSuites = makeCipherList(args.ciphers)
182+
cfg, err = updateServerTLSConfig(cfg, args.cafile, args.ciphers)
183+
if err != nil {
184+
mainLogger.Critical("TLS config construction failed: %v", err)
185+
return 3
186+
}
184187
server.TLSConfig = cfg
185188
err = server.ListenAndServeTLS("", "")
186189
} else {

utils.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func copyBody(wr io.Writer, body io.Reader) {
149149
}
150150
}
151151

152-
func makeServerTLSConfig(certfile, keyfile, cafile string) (*tls.Config, error) {
152+
func makeServerTLSConfig(certfile, keyfile, cafile, ciphers string) (*tls.Config, error) {
153153
var cfg tls.Config
154154
cert, err := tls.LoadX509KeyPair(certfile, keyfile)
155155
if err != nil {
@@ -168,9 +168,27 @@ func makeServerTLSConfig(certfile, keyfile, cafile string) (*tls.Config, error)
168168
cfg.ClientCAs = roots
169169
cfg.ClientAuth = tls.VerifyClientCertIfGiven
170170
}
171+
cfg.CipherSuites = makeCipherList(ciphers)
171172
return &cfg, nil
172173
}
173174

175+
func updateServerTLSConfig(cfg *tls.Config, cafile, ciphers string) (*tls.Config, error) {
176+
if cafile != "" {
177+
roots := x509.NewCertPool()
178+
certs, err := ioutil.ReadFile(cafile)
179+
if err != nil {
180+
return nil, err
181+
}
182+
if ok := roots.AppendCertsFromPEM(certs); !ok {
183+
return nil, errors.New("Failed to load CA certificates")
184+
}
185+
cfg.ClientCAs = roots
186+
cfg.ClientAuth = tls.VerifyClientCertIfGiven
187+
}
188+
cfg.CipherSuites = makeCipherList(ciphers)
189+
return cfg, nil
190+
}
191+
174192
func makeCipherList(ciphers string) []uint16 {
175193
if ciphers == "" {
176194
return nil

0 commit comments

Comments
 (0)