mirror of
https://github.com/esphome/esphome.git
synced 2026-05-27 20:53:46 +08:00
[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:
+12
-7
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user