diff --git a/cerberus/base.py b/cerberus/base.py
index <HASH>..<HASH> 100644
--- a/cerberus/base.py
+++ b/cerberus/base.py
@@ -91,6 +91,11 @@ def normalize_schema(schema: Schema) -> Schema:
         if isinstance(rules, str):
             continue
 
+        rules_with_whitespace = [x for x in rules if " " in x]
+        if rules_with_whitespace:
+            for rule in rules_with_whitespace:
+                rules[rule.replace(" ", "_")] = rules.pop(rule)
+
         if "type" in rules:
             constraint = rules["type"]
             if not (
diff --git a/cerberus/tests/test_schema.py b/cerberus/tests/test_schema.py
index <HASH>..<HASH> 100644
--- a/cerberus/tests/test_schema.py
+++ b/cerberus/tests/test_schema.py
@@ -125,3 +125,10 @@ def test_expansion_with_unvalidated_schema():
         {"field": {'allof_regex': ['^Aladdin .*', '.* Sane$']}}
     )
     assert_success(document={"field": "Aladdin Sane"}, validator=validator)
+
+
+def test_rulename_space_is_normalized():
+    validator = Validator(
+        schema={"field": {"default setter": lambda x: x, "type": "string"}}
+    )
+    assert "default_setter" in validator.schema["field"]
Fixes missing normalization of whitespace in schema's rule names