diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 869cae81bd..a869d90b53 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -415,6 +415,7 @@ function install_begin_request($class_loader, &$install_state) {
   else {
     $environment = 'prod';
   }
+  $GLOBALS['conf']['container_service_providers']['InstallerConfigOverride'] = 'Drupal\Core\Installer\ConfigOverride';
 
   // Only allow dumping the container once the hash salt has been created.
   $kernel = InstallerKernel::createFromRequest($request, $class_loader, $environment, (bool) Settings::get('hash_salt', FALSE));
diff --git a/core/lib/Drupal/Core/Installer/ConfigOverride.php b/core/lib/Drupal/Core/Installer/ConfigOverride.php
new file mode 100644
index 0000000000..af72703503
--- /dev/null
+++ b/core/lib/Drupal/Core/Installer/ConfigOverride.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Drupal\Core\Installer;
+
+use Drupal\Core\Cache\CacheableMetadata;
+use Drupal\Core\Config\ConfigFactoryOverrideInterface;
+use Drupal\Core\Config\StorageInterface;
+use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\DependencyInjection\ServiceProviderInterface;
+
+/**
+ * Override configuration during the installer.
+ */
+class ConfigOverride implements ServiceProviderInterface, ConfigFactoryOverrideInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function register(ContainerBuilder $container) {
+    // Register this class so that it can override configuration.
+    $container
+      ->register('core.install_config_override', static::class)
+      ->addTag('config.factory.override');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function loadOverrides($names) {
+    $overrides = [];
+    if (drupal_installation_attempted() && function_exists('drupal_install_profile_distribution_name')) {
+      // Early in the installer the site name is unknown. In this case we need to
+      // fallback to the distribution's name.
+      $overrides['system.site'] = [
+        'name' => drupal_install_profile_distribution_name(),
+      ];
+    }
+    return $overrides;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheSuffix() {
+    return 'core.install_config_override';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
+    return NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheableMetadata($name) {
+    return new CacheableMetadata();
+  }
+
+}
diff --git a/core/modules/system/config/install/system.site.yml b/core/modules/system/config/install/system.site.yml
index b5a932b6cb..d1ab8de7c6 100644
--- a/core/modules/system/config/install/system.site.yml
+++ b/core/modules/system/config/install/system.site.yml
@@ -1,5 +1,5 @@
 uuid: ''
-name: 'Drupal'
+name: ''
 mail: ''
 slogan: ''
 page:
diff --git a/core/modules/system/src/Tests/Installer/DistributionProfileTest.php b/core/modules/system/src/Tests/Installer/DistributionProfileTest.php
index e52b0469bb..3d2c4c44ab 100644
--- a/core/modules/system/src/Tests/Installer/DistributionProfileTest.php
+++ b/core/modules/system/src/Tests/Installer/DistributionProfileTest.php
@@ -46,6 +46,8 @@ protected function setUp() {
   protected function setUpLanguage() {
     // Verify that the distribution name appears.
     $this->assertRaw($this->info['distribution']['name']);
+    // Verify that the distribution name is used in the site title.
+    $this->assertTitle('Choose language | ' . $this->info['distribution']['name']);
     // Verify that the requested theme is used.
     $this->assertRaw($this->info['distribution']['install']['theme']);
     // Verify that the "Choose profile" step does not appear.
diff --git a/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php b/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php
index a608cada77..dcde753d76 100644
--- a/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php
+++ b/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php
@@ -51,13 +51,29 @@ protected function getPo($langcode) {
 
 msgid "Language"
 msgstr "Language $langcode"
+
+#: Testing site name configuration during the installer.
+msgid "Drupal"
+msgstr "Drupal"
 ENDPO;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function installParameters() {
+    $params = parent::installParameters();
+    $params['forms']['install_configure_form']['site_name'] = 'SITE_NAME_' . $this->langcode;
+    return $params;
+  }
+
   /**
    * Tests that translations ended up at the expected places.
    */
   public function testTranslationsLoaded() {
+    // Ensure the title is correct.
+    $this->assertEqual('SITE_NAME_' . $this->langcode, \Drupal::config('system.site')->get('name'));
+
     // Verify German and Spanish were configured.
     $this->drupalGet('admin/config/regional/language');
     $this->assertText('German');
