diff --git a/changelog.d/4589.bugfix b/changelog.d/4589.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..d5783f46e87669bead1df888fb611c8c206d1924
--- /dev/null
+++ b/changelog.d/4589.bugfix
@@ -0,0 +1 @@
+Synapse is now tolerant of the tls_fingerprints option being None or not specified.
diff --git a/synapse/config/tls.py b/synapse/config/tls.py
index b5f2cfd9b7cc48a5714afde677a223c91b57862e..81b3a659fede1b50d8768c211d36b28f096e57d3 100644
--- a/synapse/config/tls.py
+++ b/synapse/config/tls.py
@@ -45,7 +45,11 @@ class TlsConfig(Config):
 
         self.tls_certificate_file = self.abspath(config.get("tls_certificate_path"))
         self.tls_private_key_file = self.abspath(config.get("tls_private_key_path"))
-        self._original_tls_fingerprints = config["tls_fingerprints"]
+        self._original_tls_fingerprints = config.get("tls_fingerprints", [])
+
+        if self._original_tls_fingerprints is None:
+            self._original_tls_fingerprints = []
+
         self.tls_fingerprints = list(self._original_tls_fingerprints)
         self.no_tls = config.get("no_tls", False)