diff --git a/homeassistant/components/http.py b/homeassistant/components/http.py index 144dbafba3c..aa90ff7df84 100644 --- a/homeassistant/components/http.py +++ b/homeassistant/components/http.py @@ -37,7 +37,8 @@ CONF_API_PASSWORD = "api_password" CONF_SERVER_HOST = "server_host" CONF_SERVER_PORT = "server_port" CONF_DEVELOPMENT = "development" -CONF_CERTIFICATE = 'certificate' +CONF_SSL_CERTIFICATE = 'ssl_certificate' +CONF_SSL_KEY = 'ssl_key' DATA_API_PASSWORD = 'api_password' @@ -59,12 +60,13 @@ def setup(hass, config): server_host = conf.get(CONF_SERVER_HOST, '0.0.0.0') server_port = conf.get(CONF_SERVER_PORT, SERVER_PORT) development = str(conf.get(CONF_DEVELOPMENT, "")) == "1" - certificate = conf.get(CONF_CERTIFICATE) + ssl_certificate = conf.get(CONF_SSL_CERTIFICATE) + ssl_key = conf.get(CONF_SSL_KEY) try: server = HomeAssistantHTTPServer( (server_host, server_port), RequestHandler, hass, api_password, - development, certificate) + development, ssl_certificate, ssl_key) except OSError: # If address already in use _LOGGER.exception("Error setting up HTTP server") @@ -77,7 +79,7 @@ def setup(hass, config): hass.http = server hass.config.api = rem.API(util.get_local_ip(), api_password, server_port, - certificate is not None) + ssl_certificate is not None) return True @@ -92,7 +94,7 @@ class HomeAssistantHTTPServer(ThreadingMixIn, HTTPServer): # pylint: disable=too-many-arguments def __init__(self, server_address, request_handler_class, - hass, api_password, development, certificate): + hass, api_password, development, ssl_certificate, ssl_key): super().__init__(server_address, request_handler_class) self.server_address = server_address @@ -108,8 +110,11 @@ class HomeAssistantHTTPServer(ThreadingMixIn, HTTPServer): if development: _LOGGER.info("running http in development mode") - if certificate is not None: - self.socket = ssl.wrap_socket(self.socket, certfile=certificate) + if ssl_certificate is not None: + wrap_kwargs = {'certfile': ssl_certificate} + if ssl_key is not None: + wrap_kwargs['keyfile'] = ssl_key + self.socket = ssl.wrap_socket(self.socket, **wrap_kwargs) def start(self): """ Starts the HTTP server. """