Allow user to select all domains by typing empty string at checklist
diff --git a/certbot/display/util.py b/certbot/display/util.py
index 30d604313bf..0ad8fa200c9 100644
--- a/certbot/display/util.py
+++ b/certbot/display/util.py
@@ -179,9 +179,12 @@ def checklist(self, message, tags, default_status=True, **unused_kwargs):
             self._print_menu(message, tags)
 
             code, ans = self.input("Select the appropriate numbers separated "
-                                   "by commas and/or spaces")
+                                   "by commas and/or spaces, or leave input "
+                                   "blank to select all options shown")
 
             if code == OK:
+                if len(ans.strip()) == 0:
+                    ans = " ".join(str(x) for x in range(1, len(tags)+1))
                 indices = separate_list_input(ans)
                 selected_tags = self._scrub_checklist_input(indices, tags)
                 if selected_tags:
diff --git a/certbot/tests/display/util_test.py b/certbot/tests/display/util_test.py
index b04235bd984..fa1cb89ba12 100644
--- a/certbot/tests/display/util_test.py
+++ b/certbot/tests/display/util_test.py
@@ -79,6 +79,13 @@ def test_checklist_valid(self, mock_input):
         self.assertEqual(
             (code, set(tag_list)), (display_util.OK, set(["tag1", "tag2"])))
 
+    @mock.patch("certbot.display.util.FileDisplay.input")
+    def test_checklist_empty(self, mock_input):
+        mock_input.return_value = (display_util.OK, "")
+        code, tag_list = self.displayer.checklist("msg", TAGS)
+        self.assertEqual(
+            (code, set(tag_list)), (display_util.OK, set(["tag1", "tag2", "tag3"])))
+
     @mock.patch("certbot.display.util.FileDisplay.input")
     def test_checklist_miss_valid(self, mock_input):
         mock_input.side_effect = [

Addresses #3629, as a follow-up to #3665.
