Konfigurieren Sie WordPress auf Azure Cloud Service, um eine Verbindung mit Azure MySQL über SSL herzustellen

Lesezeit: 3 Minuten

Wir führen WordPress in einem Unterordner unserer .NET-Hauptlösung auf einem Cloud-Dienst aus. Wir haben unser MySQL von CloudDB zu Azure MySQL verschoben, es wird jedoch nur eine Verbindung hergestellt, wenn wir „SSL-Verbindung erzwingen“ auf deaktiviert setzen.

Die WordPress wp-config.php hat folgendes

define('DB_SSL', true);

Ich nehme an, das Problem ist, dass wir ein Zertifikat übergeben müssen, aber mir ist nicht klar, wie wir dies in WordPress so einstellen können, dass es bei der Verbindung über SSL übergeben wird.

Folgendes habe ich getan:

  1. Besorgen Sie sich ein SSL-Zertifikat und speichern Sie die Zertifikatsdatei im Stammverzeichnis meines WordPress-Projekts.

  2. Fügen Sie Folgendes hinzu wp-config.php:

    define('DB_SSL', true);
    
  3. Fügen Sie dies der Funktion hinzu db_connect() in meinem wp-includes/wp-db.php. Es muss vorher aufgerufen werden mysqli_real_connect():

    // Just add this line
    mysqli_ssl_set($this->dbh, NULL, NULL, ABSPATH . 'BaltimoreCyberTrustRoot.crt.pem', NULL, NULL); 
    
    if ( WP_DEBUG ) {
        mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
    } else {
        @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
    }
    

Die Lösung scheint ein bisschen schmutzig zu sein, aber sie funktioniert für mich.

  • Es wird nicht empfohlen, die Kerndateien von WP zu ändern. Was passiert, wenn WP aktualisiert wird? Müssen wir dies jedes Mal tun, wenn wir WP aktualisieren?

    – Nitesh

    27. Dezember 2017 um 20:14 Uhr

  • Ja, brauchen wir. Aber kennen Sie eine andere Lösung ohne Änderung wp-db.php Datei, damit dies funktioniert?

    – Aaron Chen

    28. Dezember 2017 um 1:30 Uhr

  • Ich stimme @Nitesh zu, sehe aber keine Alternative. Wie Aaron sagte, ist die Lösung etwas schmutzig, da sie überschrieben werden könnte, aber sie löst zumindest die gestellte Frage.

    – Jesber

    31. Dezember 2017 um 7:36 Uhr

Dies wird das Problem lösen, indem diese Zeilen zu wp_config.php hinzugefügt werden

define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL);
define(‘MYSQL_SSL_CA’, getenv(‘MYSQL_SSL_CA’));
define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );

  • Danke Anurag, ich werde das versuchen, obwohl es jetzt ziemlich weit unten auf meiner To-do-Liste steht, daher die langsame Antwort (Entschuldigung). Schätze deinen Beitrag und werde es versuchen.

    – Jesber

    27. Juni 2018 um 19:53 Uhr

Ich fand die Lösung viel einfacher, wenn ich einen Azure mySQL-Datenbankserver in Verbindung mit einem WordPress-Container-Image verwende. Wenn Sie ein VPS verwenden, trifft dies möglicherweise nicht zu.

  • Laden Sie die BaltimoreCyberTrustRoot.crt.pem herunter, auf die hier verwiesen wird: https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl
  • Legen Sie die Datei im Stammverzeichnis Ihrer WordPress-Installation ab
  • Füge diese beiden Variablen in wp-config hinzu:
  • define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
  • define('MYSQL_SSL_CA_PATH',"https://stackoverflow.com/");

  • in meinem Fall funktionierte es ohne das Hinzufügen von define(‘MYSQL_SSL_CA_PATH’,’/’);

    – Raghavendra

    15. Mai 2018 um 13:27 Uhr

Die Lösungen, die für mich funktionieren, fügen Sie zu wp-config.php hinzu:

PHP7.x

define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL | 
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT ); 
define( 'MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));

PHP5.x

define('MYSQL_CLIENT_FLAGS', MYSQL_CLIENT_SSL);
define( 'MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));

Quelle: https://jkudo.medium.com/how-to-connection-from-wordpress-installed-on-azure-app-service-to-azure-database-for-mysql-via-2b2c37c4a7de

1381800cookie-checkKonfigurieren Sie WordPress auf Azure Cloud Service, um eine Verbindung mit Azure MySQL über SSL herzustellen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy