diff --git a/changelog.d/17568.bugfix b/changelog.d/17568.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..71a1f12915493db8bfc404a630031e7d6e30ee48
--- /dev/null
+++ b/changelog.d/17568.bugfix
@@ -0,0 +1 @@
+Fix fetching federation signing keys from servers that omit `old_verify_keys`. Contributed by @tulir @ Beeper.
diff --git a/synapse/crypto/keyring.py b/synapse/crypto/keyring.py
index 8c301e077c291737134936d1cc121b588912031c..643d2d4e66d0a342995dcf5299b2147356036756 100644
--- a/synapse/crypto/keyring.py
+++ b/synapse/crypto/keyring.py
@@ -589,7 +589,7 @@ class BaseV2KeyFetcher(KeyFetcher):
                 % (server_name,)
             )
 
-        for key_id, key_data in response_json["old_verify_keys"].items():
+        for key_id, key_data in response_json.get("old_verify_keys", {}).items():
             if is_signing_algorithm_supported(key_id):
                 key_base64 = key_data["key"]
                 key_bytes = decode_base64(key_base64)