Commit e5a89276 authored by elcore's avatar elcore Committed by Matt Holt

Allow just one TLS Protocol (Caddyfile) (#1004)

* Allow just one TLS Protocol

* Fix typo
parent 2019eec5
...@@ -75,21 +75,27 @@ func setupTLS(c *caddy.Controller) error { ...@@ -75,21 +75,27 @@ func setupTLS(c *caddy.Controller) error {
config.KeyType = value config.KeyType = value
case "protocols": case "protocols":
args := c.RemainingArgs() args := c.RemainingArgs()
if len(args) != 2 { if len(args) == 1 {
return c.ArgErr() value, ok := supportedProtocols[strings.ToLower(args[0])]
} if !ok {
value, ok := supportedProtocols[strings.ToLower(args[0])] return c.Errf("Wrong protocol name or protocol not supported: '%s'", args[0])
if !ok { }
return c.Errf("Wrong protocol name or protocol not supported: '%s'", args[0])
} config.ProtocolMinVersion, config.ProtocolMaxVersion = value, value
config.ProtocolMinVersion = value } else {
value, ok = supportedProtocols[strings.ToLower(args[1])] value, ok := supportedProtocols[strings.ToLower(args[0])]
if !ok { if !ok {
return c.Errf("Wrong protocol name or protocol not supported: '%s'", args[1]) return c.Errf("Wrong protocol name or protocol not supported: '%s'", args[0])
} }
config.ProtocolMaxVersion = value config.ProtocolMinVersion = value
if config.ProtocolMinVersion > config.ProtocolMaxVersion { value, ok = supportedProtocols[strings.ToLower(args[1])]
return c.Errf("Minimum protocol version cannot be higher than maximum (reverse the order)") if !ok {
return c.Errf("Wrong protocol name or protocol not supported: '%s'", args[1])
}
config.ProtocolMaxVersion = value
if config.ProtocolMinVersion > config.ProtocolMaxVersion {
return c.Errf("Minimum protocol version cannot be higher than maximum (reverse the order)")
}
} }
case "ciphers": case "ciphers":
for c.NextArg() { for c.NextArg() {
......
...@@ -269,6 +269,28 @@ func TestSetupParseWithKeyType(t *testing.T) { ...@@ -269,6 +269,28 @@ func TestSetupParseWithKeyType(t *testing.T) {
} }
} }
func TestSetupParseWithOneTLSProtocol(t *testing.T) {
params := `tls {
protocols tls1.2
}`
cfg := new(Config)
RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
c := caddy.NewTestController("", params)
err := setupTLS(c)
if err != nil {
t.Errorf("Expected no errors, got: %v", err)
}
if cfg.ProtocolMinVersion != cfg.ProtocolMaxVersion {
t.Errorf("Expected ProtocolMinVersion to be the same as ProtocolMaxVersion")
}
if cfg.ProtocolMinVersion != tls.VersionTLS12 && cfg.ProtocolMaxVersion != tls.VersionTLS12 {
t.Errorf("Expected 'tls1.2 (0x0303)' as ProtocolMinVersion/ProtocolMaxVersion, got %v/%v", cfg.ProtocolMinVersion, cfg.ProtocolMaxVersion)
}
}
const ( const (
certFile = "test_cert.pem" certFile = "test_cert.pem"
keyFile = "test_key.pem" keyFile = "test_key.pem"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment