diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl
index 309a2a022..a25ceffcb 100644
--- a/apps/emqx/src/emqx_schema.erl
+++ b/apps/emqx/src/emqx_schema.erl
@@ -2287,6 +2287,17 @@ common_ssl_opts_schema(Defaults) ->
desc => ?DESC(common_ssl_opts_schema_secure_renegotiate)
}
)},
+ {"log_level",
+ sc(
+ hoconsc:enum([
+ emergency, alert, critical, error, warning, notice, info, debug, none, all
+ ]),
+ #{
+ default => notice,
+ desc => ?DESC(common_ssl_opts_schema_log_level),
+ importance => ?IMPORTANCE_LOW
+ }
+ )},
{"hibernate_after",
sc(
diff --git a/changes/ce/feat-10584.en.md b/changes/ce/feat-10584.en.md
new file mode 100644
index 000000000..abb514cbb
--- /dev/null
+++ b/changes/ce/feat-10584.en.md
@@ -0,0 +1 @@
+Add log level configuration to SSL communication
diff --git a/rel/i18n/emqx_schema.hocon b/rel/i18n/emqx_schema.hocon
index f5c78cc0a..9ae63615d 100644
--- a/rel/i18n/emqx_schema.hocon
+++ b/rel/i18n/emqx_schema.hocon
@@ -1300,6 +1300,11 @@ you drop support for the insecure renegotiation, prone to MitM attacks."""
common_ssl_opts_schema_secure_renegotiate.label:
"""SSL renegotiate"""
+common_ssl_opts_schema_log_level.desc:
+"""Log level for SSL communication. Default is 'notice'. Set to 'debug' to inspect TLS handshake messages."""
+common_ssl_opts_schema_log_level.label:
+"""SSL log level"""
+
sysmon_vm_busy_port.desc:
"""When a port (e.g. TCP socket) is overloaded, there will be a busy_port
warning log,
and an MQTT message is published to the system topic $SYS/sysmon/busy_port
."""