fix: aiomysql only takes an SSLContext object

This commit is contained in:
2024-11-16 09:26:36 +07:00
parent d7d3dbac59
commit 5f3d62d84a
2 changed files with 49 additions and 7 deletions

View File

@ -46,19 +46,37 @@ class Data:
}
if self.config.database.ssl_enabled:
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
no_ca = (
self.config.database.ssl_cafile is None
and self.config.database.ssl_capath is None
)
if self.config.database.ssl_ca:
ssl_context.load_verify_locations(self.config.database.ssl_ca)
ctx = ssl.create_default_context(
cafile=self.config.database.ssl_cafile,
capath=self.config.database.ssl_capath,
)
ctx.check_hostname = self.config.database.ssl_verify_identity
if self.config.database.ssl_verify_cert is None:
ctx.verify_mode = ssl.CERT_NONE if no_ca else ssl.CERT_REQUIRED
else:
ctx.verify_mode = (
ssl.CERT_REQUIRED
if self.config.database.ssl_verify_cert
else ssl.CERT_NONE
)
if self.config.database.ssl_cert:
ssl_context.load_cert_chain(
ctx.load_cert_chain(
self.config.database.ssl_cert,
self.config.database.ssl_key,
self.config.database.ssl_key_password,
)
if self.config.database.ssl_ciphers:
ctx.set_ciphers(self.config.database.ssl_ciphers)
connect_args["ssl"] = ssl_context
connect_args["ssl"] = ctx
Data.engine = create_async_engine(
self.__url,