“Upgrade Network” error: stuck with SSL certificate verification

When trying to update one Network/MU install, I got the following error.

Warning! Problem updating https://subdomain-A.example.com. Your server may not be able to connect to sites running on it. Error message: SSL: certificate subject name ‘example.com’ does not match target host name ‘subdomain-A.example.com’

Read More

As I know that the certificate is valid, etc. I just need to somehow bypass the verification check from WP.

Related posts

Leave a Reply

1 comment

  1. I had to write a little plugin to bypass the check – free to download and use.

    <?php
    /**
     * Plugin Name: Upgrade SSL Bypass
     * Description: The DB-Upgrade process for networks does not work if there's an error with your SSL certificate. This plugin bypasses the check by disabling the verification in case of an error.
     * Version:     2013-01-02.1502
     * Author:      Franz Josef Kaiser <wecodemore@gmail.com>
     * Author URI:  http://unserkaiser.com
     * License:     The MIT License (MIT)
     * LicenseURI:  http://www.opensource.org/licenses/mit-license.php
     */
    // No direct file access
    defined( 'ABSPATH' ) OR exit;
    
    add_filter( 'http_request_args', 'upgrade_ssl_bypass', 10, 2 );
    /**
     * Callback for a HTTP request used to switch the
     * SSL verification in case of a WP error response.
     * @param  array  $r   Request arguments
     * @param  string $url Request URL
     * @return array  $r
     */
    function upgrade_ssl_bypass( $r, $url )
    {
        if (
            ! isset( $_GET )
            OR ! isset( $_GET['action'] )
            OR 'upgrade' !== $_GET['action']
        )
            return $r;
    
        if (
            is_wp_error( $response = wp_remote_get(
                 admin_url( 'upgrade.php?step=upgrade_db' )
                ,array(
                     'timeout'     => 120
                    ,'httpversion' => '1.1'
                 )
            ) )
            AND strstr( $response->get_error_message(), 'SSL: certificate subject name' )
        )
            add_filter( 'https_ssl_verify', '__return_false' );
    
        return $r;
    }