Index: wp-includes/ms-blogs.php
===================================================================
--- wp-includes/ms-blogs.php	(revision 16976)
+++ wp-includes/ms-blogs.php	(working copy)
@@ -30,11 +30,17 @@
  * @since MU
  *
  * @param int $blog_id Blog ID
+ * @param bool $ssl true for https, false for http. null (default) for autodetect.
  * @return string
  */
-function get_blogaddress_by_id( $blog_id ) {
+function get_blogaddress_by_id( $blog_id, $ssl = null ) {
+	if ( !isset($ssl) ) {
+		$ssl = is_ssl();
+	}
+	$protocol = $ssl ? ' https://' : ' http://';
+
 	$bloginfo = get_blog_details( (int) $blog_id, false ); // only get bare details!
-	return esc_url( 'http://' . $bloginfo->domain . $bloginfo->path );
+	return esc_url( $protocol . $bloginfo->domain . $bloginfo->path );
 }
 
 /**
@@ -67,20 +73,27 @@
  *
  * @param string $domain
  * @param string $path
+ * @param bool $ssl true for https, false for http. null (default) for autodetect.
  * @return string
  */
-function get_blogaddress_by_domain( $domain, $path ) {
+function get_blogaddress_by_domain( $domain, $path, $ssl = null ) {
+	if ( !isset($ssl) ) {
+		$ssl = is_ssl();
+	}
+
+	$protocol = $ssl ? ' https://' : ' http://';
+
 	if ( is_subdomain_install() ) {
-		$url = "http://".$domain.$path;
+		$url = $protocol.$domain.$path;
 	} else {
 		if ( $domain != $_SERVER['HTTP_HOST'] ) {
 			$blogname = substr( $domain, 0, strpos( $domain, '.' ) );
-			$url = 'http://' . substr( $domain, strpos( $domain, '.' ) + 1 ) . $path;
+			$url = $protocol . substr( $domain, strpos( $domain, '.' ) + 1 ) . $path;
 			// we're not installing the main blog
 			if ( $blogname != 'www.' )
 				$url .= $blogname . '/';
 		} else { // main blog
-			$url = 'http://' . $domain . $path;
+			$url = $protocol . $domain . $path;
 		}
 	}
 	return esc_url( $url );
Index: wp-admin/network/site-info.php
===================================================================
--- wp-admin/network/site-info.php	(revision 16976)
+++ wp-admin/network/site-info.php	(working copy)
@@ -33,7 +33,8 @@
 	switch_to_blog( $id );
 
 	if ( isset( $_POST['update_home_url'] ) && $_POST['update_home_url'] == 'update' ) {
-		$blog_address = get_blogaddress_by_domain( $_POST['blog']['domain'], $_POST['blog']['path'] );
+		$ssl = 'https' === $_POST['blog']['protocol'];
+		$blog_address = get_blogaddress_by_domain( $_POST['blog']['domain'], $_POST['blog']['path'], $ssl );
 		if ( get_option( 'siteurl' ) != $blog_address )
 			update_option( 'siteurl', $blog_address );
 
@@ -104,7 +105,7 @@
 			if ( $is_main_site ) { ?>
 			<td><code><?php echo $protocol; echo esc_attr( $details->domain ) ?></code></td>
 			<?php } else { ?>
-			<td><?php echo $protocol; ?><input name="blog[domain]" type="text" id="domain" value="<?php echo esc_attr( $details->domain ) ?>" size="33" /></td>
+			<td><input name="blog[protocol]" type="radio" id="protocol" value="http" style="width: 20px;" <?php if ( 'http://' === $protocol ) echo 'checked="checked"'; ?>>http:// <input name="blog[protocol]" type="radio" id="protocol" value="https" style="width: 20px; margin-left: 20px;" <?php if ( 'https://' === $protocol ) echo 'checked="checked"'; ?>>https:// <input name="blog[domain]" type="text" id="domain" value="<?php echo esc_attr( $details->domain ) ?>" size="33" /></td>
 			<?php } ?>
 		</tr>
 		<tr class="form-field form-required">
