[mqtt] Fixed permission denied error for client certificates on Windows (#13525)

Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
This commit is contained in:
Matthias König
2026-03-12 17:00:08 +01:00
committed by GitHub
parent a76767a0ab
commit 25c30ac5bb
+12 -7
View File
@@ -2,6 +2,7 @@ import contextlib
from datetime import datetime from datetime import datetime
import json import json
import logging import logging
import os
import ssl import ssl
import tempfile import tempfile
import time import time
@@ -109,14 +110,18 @@ def prepare(
CONF_CLIENT_CERTIFICATE_KEY CONF_CLIENT_CERTIFICATE_KEY
): ):
with ( with (
tempfile.NamedTemporaryFile(mode="w+") as cert_file, tempfile.NamedTemporaryFile(mode="w+", delete=False) as cert_file,
tempfile.NamedTemporaryFile(mode="w+") as key_file, tempfile.NamedTemporaryFile(mode="w+", delete=False) as key_file,
): ):
cert_file.write(config[CONF_MQTT].get(CONF_CLIENT_CERTIFICATE)) try:
cert_file.flush() cert_file.write(config[CONF_MQTT].get(CONF_CLIENT_CERTIFICATE))
key_file.write(config[CONF_MQTT].get(CONF_CLIENT_CERTIFICATE_KEY)) key_file.write(config[CONF_MQTT].get(CONF_CLIENT_CERTIFICATE_KEY))
key_file.flush() cert_file.close()
context.load_cert_chain(cert_file.name, key_file.name) key_file.close()
context.load_cert_chain(cert_file.name, key_file.name)
finally:
os.unlink(cert_file.name)
os.unlink(key_file.name)
client.tls_set_context(context) client.tls_set_context(context)
try: try: