Skip to content

Commit 98b515f

Browse files
authored
Merge pull request #280 from GlintPay/feature/SocketMinimumTLSVersion
Feature/socket minimum tls version
2 parents 7bd6227 + 7291661 commit 98b515f

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

config/configuration.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const (
2020
SocketCertificateFile string = "SocketCertificateFile"
2121
SocketCAFile string = "SocketCAFile"
2222
SocketInsecureSkipVerify string = "SocketInsecureSkipVerify"
23+
SocketMinimumTLSVersion string = "SocketMinimumTLSVersion"
2324
DefaultApplVerID string = "DefaultApplVerID"
2425
StartTime string = "StartTime"
2526
EndTime string = "EndTime"

config/doc.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@ SocketCAFile
239239
240240
Optional root CA to use for secure TLS connections. For acceptors, client certificates will be verified against this CA. For initiators, clients will use the CA to verify the server certificate. If not configurated, initiators will verify the server certificate using the host's root CA set.
241241
242+
SocketMinimumTLSVersion
243+
244+
Specify the Minimum TLS version to use when creating a secure connection. The valid choices are SSL30, TLS10, TLS11, TLS12. Defaults to TLS12.
245+
242246
FileLogPath
243247
244248
Directory to store logs. Value must be valid directory for storing files, application must have write access.

tls.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,26 @@ func loadTLSConfig(settings *SessionSettings) (tlsConfig *tls.Config, err error)
4040
tlsConfig.Certificates = make([]tls.Certificate, 1)
4141
tlsConfig.InsecureSkipVerify = insecureSkipVerify
4242

43+
minVersion := "TLS12"
44+
if settings.HasSetting(config.SocketMinimumTLSVersion) {
45+
minVersion, err = settings.Setting(config.SocketMinimumTLSVersion)
46+
if err != nil {
47+
return
48+
}
49+
50+
switch minVersion {
51+
case "SSL30":
52+
tlsConfig.MinVersion = tls.VersionSSL30
53+
case "TLS10":
54+
tlsConfig.MinVersion = tls.VersionTLS10
55+
case "TLS11":
56+
tlsConfig.MinVersion = tls.VersionTLS11
57+
case "TLS12":
58+
tlsConfig.MinVersion = tls.VersionTLS12
59+
}
60+
}
61+
62+
4363
if tlsConfig.Certificates[0], err = tls.LoadX509KeyPair(certificateFile, privateKeyFile); err != nil {
4464
return
4565
}

tls_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,40 @@ func (s *TLSTestSuite) TestInsecureSkipVerifyAndCerts() {
109109
s.True(tlsConfig.InsecureSkipVerify)
110110
s.Len(tlsConfig.Certificates, 1)
111111
}
112+
113+
func (s *TLSTestSuite) TestMinimumTLSVersion() {
114+
s.settings.GlobalSettings().Set(config.SocketPrivateKeyFile, s.PrivateKeyFile)
115+
s.settings.GlobalSettings().Set(config.SocketCertificateFile, s.CertificateFile)
116+
117+
// SSL30
118+
s.settings.GlobalSettings().Set(config.SocketMinimumTLSVersion, "SSL30")
119+
tlsConfig, err := loadTLSConfig(s.settings.GlobalSettings())
120+
121+
s.Nil(err)
122+
s.NotNil(tlsConfig)
123+
s.Equal(tlsConfig.MinVersion, uint16(tls.VersionSSL30))
124+
125+
// TLS10
126+
s.settings.GlobalSettings().Set(config.SocketMinimumTLSVersion, "TLS10")
127+
tlsConfig, err = loadTLSConfig(s.settings.GlobalSettings())
128+
129+
s.Nil(err)
130+
s.NotNil(tlsConfig)
131+
s.Equal(tlsConfig.MinVersion, uint16(tls.VersionTLS10))
132+
133+
// TLS11
134+
s.settings.GlobalSettings().Set(config.SocketMinimumTLSVersion, "TLS11")
135+
tlsConfig, err = loadTLSConfig(s.settings.GlobalSettings())
136+
137+
s.Nil(err)
138+
s.NotNil(tlsConfig)
139+
s.Equal(tlsConfig.MinVersion, uint16(tls.VersionTLS11))
140+
141+
// TLS12
142+
s.settings.GlobalSettings().Set(config.SocketMinimumTLSVersion, "TLS12")
143+
tlsConfig, err = loadTLSConfig(s.settings.GlobalSettings())
144+
145+
s.Nil(err)
146+
s.NotNil(tlsConfig)
147+
s.Equal(tlsConfig.MinVersion, uint16(tls.VersionTLS12))
148+
}

0 commit comments

Comments
 (0)