Question: I have a multi-wordpress installation (3.x) with 5 sites and only one of them is using SSL.

All of these are running on their own domain, and the <http://ssldomain.com> forwards to <https://ssldomain.com>.

Still, this seems to break wordpress upgrades. 

Now I get a message:

Upgrade Network

<https://nonsecureddomain.com>

Warning! Problem updating <https://nonsecureddomain.com>. Your server may not be able to connect to sites running on it. Error message: SSL: no alternative certificate subject name matches target host name 'nonsecureddomain.com'

It seems that at some point WP decides to go HTTPS for this domain, where it is not supposed to.

The network itself is the one running on HTTPS(SSL), and what concerns me is that 

<https://mydecureddomain.com/wp-admin/network/site-info.php?id=5>

Is listing the site with a hardcoded HTTPS prefix which seems to to be configurable?

![enter image description here](https://i.stack.imgur.com/mvVdd.png)

Answer: 
This is an old question, but I figured I'd post my answer as I just had to deal with this problem and figured out a temporary workaround that got it to work for me.

WARNING: This requires modifying core which is NOT recommended. If you use this workaround, you should probably remove the workaround when you've finished updating.

As of WP 4.1, the problem exists in /wp-admin/network/upgrade.php line 67. Here, `$upgrade_url` is being passed to `wp_remote_get()`. But `$upgrade_url` is getting its SSL cues from your current page. So if your current page is HTTPS, then it will adopt HTTPS for all of the sites that are being upgraded, even if those sites aren't supposed to be HTTPS.

Now, from the code, it seems like you should be able to filter `admin_url()` in order to change `$upgrade_url` from HTTPS to HTTP. However, when I tried this filter, it didn't work. So what I ended up having to do was insert the following code right before `wp_remote_get()` on line 67:

```
if( strpos( $url, $your_ssl_domain ) === false )
    $upgrade_url = str_replace( 'https', 'http', $upgrade_url );

```

Hope that helps someone.
This is currently a known bug and already has a patch submitted for review. Feel free to add your feedback directly to the raised bug:

<https://core.trac.wordpress.org/ticket/31405>