Skip to content

Commit b7fef84

Browse files
Add _initialize_ssl_context with min_tls.
1 parent 86a4aef commit b7fef84

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

tabpy/tabpy_server/app/app.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import os
66
import shutil
77
import signal
8+
import ssl
89
import sys
910
import _thread
1011

@@ -83,6 +84,23 @@ def __init__(self, config_file, disable_auth_warning=True):
8384

8485
self._parse_config(config_file)
8586

87+
def _initialize_ssl_context(self):
88+
ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
89+
90+
ssl_context.load_cert_chain(
91+
certfile=self.settings[SettingsParameters.CertificateFile],
92+
keyfile=self.settings[SettingsParameters.KeyFile]
93+
)
94+
95+
min_tls = self.settings.get(SettingsParameters.MinimumTLSVersion)
96+
try:
97+
ssl_context.minimum_version = ssl.TLSVersion[min_tls]
98+
logger.info(f"Setting minimum TLS version to: {min_tls}")
99+
except KeyError:
100+
logger.warning(f"Unrecognized value for TABPY_MINIMUM_TLS_VERSION: {min_tls}")
101+
102+
return ssl_context
103+
86104
def _get_tls_certificates(self, config):
87105
tls_certificates = []
88106
cert = config[SettingsParameters.CertificateFile]
@@ -127,10 +145,7 @@ def run(self):
127145
protocol = self.settings[SettingsParameters.TransferProtocol]
128146
ssl_options = None
129147
if protocol == "https":
130-
ssl_options = {
131-
"certfile": self.settings[SettingsParameters.CertificateFile],
132-
"keyfile": self.settings[SettingsParameters.KeyFile],
133-
}
148+
ssl_options = self._initialize_ssl_context()
134149
elif protocol != "http":
135150
msg = f"Unsupported transfer protocol {protocol}."
136151
logger.critical(msg)
@@ -328,6 +343,8 @@ def _parse_config(self, config_file):
328343
(SettingsParameters.CertificateFile, ConfigParameters.TABPY_CERTIFICATE_FILE,
329344
None, None),
330345
(SettingsParameters.KeyFile, ConfigParameters.TABPY_KEY_FILE, None, None),
346+
(SettingsParameters.MinimumTLSVersion, ConfigParameters.TABPY_MINIMUM_TLS_VERSION,
347+
"TLSv1_2", None),
331348
(SettingsParameters.StateFilePath, ConfigParameters.TABPY_STATE_PATH,
332349
os.path.join(pkg_path, "tabpy_server"), None),
333350
(SettingsParameters.StaticPath, ConfigParameters.TABPY_STATIC_PATH,

0 commit comments

Comments
 (0)