@@ -313,8 +313,8 @@ type CLIArgs struct {
313313 shutdownTimeout time.Duration
314314}
315315
316- func parse_args () CLIArgs {
317- args := CLIArgs {
316+ func parse_args () * CLIArgs {
317+ args := & CLIArgs {
318318 minTLSVersion : TLSVersionArg (tls .VersionTLS12 ),
319319 maxTLSVersion : TLSVersionArg (tls .VersionTLS13 ),
320320 denyDstAddr : PrefixList {
@@ -684,9 +684,7 @@ func run() int {
684684 }
685685
686686 if args .cert != "" {
687- cfg , err1 := makeServerTLSConfig (args .cert , args .key , args .cafile ,
688- args .ciphers , args .curves ,
689- uint16 (args .minTLSVersion ), uint16 (args .maxTLSVersion ), ! args .disableHTTP2 )
687+ cfg , err1 := makeServerTLSConfig (args )
690688 if err1 != nil {
691689 mainLogger .Critical ("TLS config construction failed: %v" , err1 )
692690 return 3
@@ -740,17 +738,19 @@ func run() int {
740738 }
741739 if args .autocertHTTP != "" {
742740 go func () {
743- log . Fatalf ("HTTP-01 ACME challenge server stopped: %v" ,
741+ mainLogger . Critical ("HTTP-01 ACME challenge server stopped: %v" ,
744742 http .ListenAndServe (args .autocertHTTP , m .HTTPHandler (nil )))
745743 }()
746744 }
747- cfg := m .TLSConfig ()
748- cfg , err = updateServerTLSConfig (cfg , args .cafile , args .ciphers , args .curves ,
749- uint16 (args .minTLSVersion ), uint16 (args .maxTLSVersion ), ! args .disableHTTP2 )
745+ cfg , err := makeServerTLSConfig (args )
750746 if err != nil {
751747 mainLogger .Critical ("TLS config construction failed: %v" , err )
752748 return 3
753749 }
750+ cfg .GetCertificate = m .GetCertificate
751+ if len (cfg .NextProtos ) > 0 {
752+ cfg .NextProtos = append (cfg .NextProtos , acme .ALPNProto )
753+ }
754754 listener = tls .NewListener (listener , cfg )
755755 }
756756 defer listener .Close ()
@@ -861,66 +861,41 @@ func run() int {
861861 return 2
862862}
863863
864- func makeServerTLSConfig (certfile , keyfile , cafile , ciphers , curves string , minVer , maxVer uint16 , h2 bool ) (* tls.Config , error ) {
864+ func makeServerTLSConfig (args * CLIArgs ) (* tls.Config , error ) {
865865 cfg := tls.Config {
866- MinVersion : minVer ,
867- MaxVersion : maxVer ,
868- }
869- cert , err := tls .LoadX509KeyPair (certfile , keyfile )
870- if err != nil {
871- return nil , err
866+ MinVersion : uint16 (args .minTLSVersion ),
867+ MaxVersion : uint16 (args .maxTLSVersion ),
872868 }
873- cfg .Certificates = []tls.Certificate {cert }
874- if cafile != "" {
875- roots , err := tlsutil .LoadCAfile (cafile )
869+ if args .cert != "" {
870+ cert , err := tls .LoadX509KeyPair (args .cert , args .key )
876871 if err != nil {
877872 return nil , err
878873 }
879- cfg .ClientCAs = roots
880- cfg .ClientAuth = tls .VerifyClientCertIfGiven
881- }
882- cfg .CipherSuites , err = tlsutil .ParseCipherList (ciphers )
883- if err != nil {
884- return nil , err
874+ cfg .Certificates = []tls.Certificate {cert }
885875 }
886- cfg .CurvePreferences , err = tlsutil .ParseCurveList (curves )
887- if err != nil {
888- return nil , err
889- }
890- if h2 {
891- cfg .NextProtos = []string {"h2" , "http/1.1" }
892- } else {
893- cfg .NextProtos = []string {"http/1.1" }
894- }
895- return & cfg , nil
896- }
897-
898- func updateServerTLSConfig (cfg * tls.Config , cafile , ciphers , curves string , minVer , maxVer uint16 , h2 bool ) (* tls.Config , error ) {
899- if cafile != "" {
900- roots , err := tlsutil .LoadCAfile (cafile )
876+ if args .cafile != "" {
877+ roots , err := tlsutil .LoadCAfile (args .cafile )
901878 if err != nil {
902879 return nil , err
903880 }
904881 cfg .ClientCAs = roots
905882 cfg .ClientAuth = tls .VerifyClientCertIfGiven
906883 }
907884 var err error
908- cfg .CipherSuites , err = tlsutil .ParseCipherList (ciphers )
885+ cfg .CipherSuites , err = tlsutil .ParseCipherList (args . ciphers )
909886 if err != nil {
910887 return nil , err
911888 }
912- cfg .CurvePreferences , err = tlsutil .ParseCurveList (curves )
889+ cfg .CurvePreferences , err = tlsutil .ParseCurveList (args . curves )
913890 if err != nil {
914891 return nil , err
915892 }
916- if h2 {
917- cfg .NextProtos = []string {"h2" , "http/1.1" , "acme-tls/1" }
893+ if ! args . disableHTTP2 {
894+ cfg .NextProtos = []string {"h2" , "http/1.1" }
918895 } else {
919- cfg .NextProtos = []string {"http/1.1" , "acme-tls/1" }
896+ cfg .NextProtos = []string {"http/1.1" }
920897 }
921- cfg .MinVersion = minVer
922- cfg .MaxVersion = maxVer
923- return cfg , nil
898+ return & cfg , nil
924899}
925900
926901func list_ciphers () {
0 commit comments