Skip to content

Commit 0b05761

Browse files
authored
Merge pull request #353 from blutack/features/clientless_ssl
Add SocketUseSSL parameter to allow SSL/TLS without client certs
2 parents ee21dfe + 4d434d2 commit 0b05761

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

config/configuration.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const (
2222
SocketInsecureSkipVerify string = "SocketInsecureSkipVerify"
2323
SocketMinimumTLSVersion string = "SocketMinimumTLSVersion"
2424
SocketTimeout string = "SocketTimeout"
25+
SocketUseSSL string = "SocketUseSSL"
2526
DefaultApplVerID string = "DefaultApplVerID"
2627
StartTime string = "StartTime"
2728
EndTime string = "EndTime"

config/doc.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,10 @@ SocketMinimumTLSVersion
284284
285285
Specify the Minimum TLS version to use when creating a secure connection. The valid choices are SSL30, TLS10, TLS11, TLS12. Defaults to TLS12.
286286
287+
SocketUseSSL
288+
289+
Use SSL for initiators even if client certificates are not present. If set to N or omitted, TLS will not be used if SocketPrivateKeyFile or SocketCertificateFile are not supplied.
290+
287291
PersistMessages
288292
289293
If set to N, no messages will be persisted. This will force QuickFIX/Go to always send GapFills instead of resending messages. Use this if you know you never want to resend a message. Useful for market data streams. Valid Values:

tls.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ import (
1010
)
1111

1212
func loadTLSConfig(settings *SessionSettings) (tlsConfig *tls.Config, err error) {
13+
allowSkipClientCerts := false
14+
if settings.HasSetting(config.SocketUseSSL) {
15+
allowSkipClientCerts, err = settings.BoolSetting(config.SocketUseSSL)
16+
if err != nil {
17+
return
18+
}
19+
}
20+
1321
insecureSkipVerify := false
1422
if settings.HasSetting(config.SocketInsecureSkipVerify) {
1523
insecureSkipVerify, err = settings.BoolSetting(config.SocketInsecureSkipVerify)
@@ -19,9 +27,9 @@ func loadTLSConfig(settings *SessionSettings) (tlsConfig *tls.Config, err error)
1927
}
2028

2129
if !settings.HasSetting(config.SocketPrivateKeyFile) && !settings.HasSetting(config.SocketCertificateFile) {
22-
if insecureSkipVerify {
30+
if allowSkipClientCerts {
2331
tlsConfig = defaultTLSConfig()
24-
tlsConfig.InsecureSkipVerify = true
32+
tlsConfig.InsecureSkipVerify = insecureSkipVerify
2533
}
2634
return
2735
}

tls_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,15 @@ func (s *TLSTestSuite) TestLoadTLSWithCA() {
9090
func (s *TLSTestSuite) TestInsecureSkipVerify() {
9191
s.settings.GlobalSettings().Set(config.SocketInsecureSkipVerify, "Y")
9292

93+
tlsConfig, err := loadTLSConfig(s.settings.GlobalSettings())
94+
s.Nil(err)
95+
s.Nil(tlsConfig)
96+
}
97+
98+
func (s *TLSTestSuite) TestInsecureSkipVerifyWithUseSSL() {
99+
s.settings.GlobalSettings().Set(config.SocketUseSSL, "Y")
100+
s.settings.GlobalSettings().Set(config.SocketInsecureSkipVerify, "Y")
101+
93102
tlsConfig, err := loadTLSConfig(s.settings.GlobalSettings())
94103
s.Nil(err)
95104
s.NotNil(tlsConfig)

0 commit comments

Comments
 (0)