httpclient: add a configuration parameter to skip TLS certificate validation

In this mode, TLS is susceptible to man-in-the-middle attacks.
This should be used only for testing.
This commit is contained in:
Nicola Murino 2020-05-03 11:37:50 +02:00
parent 510a95bd6d
commit f369fdf6f2
5 changed files with 12 additions and 3 deletions

View file

@ -103,6 +103,7 @@ func init() {
HTTPConfig: httpclient.Config{
Timeout: 20,
CACertificates: nil,
SkipTLSVerify: false,
},
}

View file

@ -111,6 +111,7 @@ The configuration file contains the following sections:
- **"http"**, the configuration for HTTP clients. HTTP clients are used for executing hooks such as the ones used for custom actions, external authentication and pre-login user modifications
- `timeout`, integer. Timeout specifies a time limit, in seconds, for requests.
- `ca_certificates`, list of strings. List of paths to extra CA certificates to trust. The paths can be absolute or relative to the config dir. Adding trusted CA certificates is a convenient way to use self-signed certificates without defeating the purpose of using TLS.
- `skip_tls_verify`, boolean. if enabled the HTTP client accepts any TLS certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing.
A full example showing the default config (in JSON format) can be found [here](../sftpgo.json).

View file

@ -22,7 +22,12 @@ type Config struct {
// The paths can be absolute or relative to the config dir.
// Adding trusted CA certificates is a convenient way to use self-signed
// certificates without defeating the purpose of using TLS
CACertificates []string `json:"ca_certificates" mapstructure:"ca_certificates"`
CACertificates []string `json:"ca_certificates" mapstructure:"ca_certificates"`
// if enabled the HTTP client accepts any TLS certificate presented by
// the server and any host name in that certificate.
// In this mode, TLS is susceptible to man-in-the-middle attacks.
// This should be used only for testing.
SkipTLSVerify bool `json:"skip_tls_verify" mapstructure:"skip_tls_verify"`
customTransport *http.Transport
}
@ -42,6 +47,7 @@ func (c Config) Initialize(configDir string) {
RootCAs: rootCAs,
}
}
customTransport.TLSClientConfig.InsecureSkipVerify = c.SkipTLSVerify
httpConfig.customTransport = customTransport
}

View file

@ -68,6 +68,7 @@
},
"http": {
"timeout": 20,
"ca_certificates": []
"ca_certificates": [],
"skip_tls_verify": false
}
}

View file

@ -52,7 +52,7 @@ type Fs interface {
type VirtualFolder struct {
VirtualPath string `json:"virtual_path"`
MappedPath string `json:"mapped_path"`
// This folder will be excluded from user quota
// Enable to exclude this folder from the user quota
ExcludeFromQuota bool `json:"exclude_from_quota"`
}