Azure

Azure App Service に設置した WordPress から Azure Database for MySQLへSSL接続する。

はじめに

Azure Database for MySQL ではSecure Sockets Layer (SSL) をサポートしており、デフォルト設定はEnableになっています。

せっかくなのでWordpressをApp Serviceに設置した場合でもSSLで接続したいですね。

そこでSSL接続する方法を紹介します。
下記を参考しています。
Connect Azure App Service to Azure database for MySQL and PostgreSQL via SSL
https://blogs.msdn.microsoft.com/appserviceteam/2017/05/10/connect-azure-app-service-to-azure-database-for-mysql-and-postgresql-via-ssl/

Configure SSL connectivity in your application to securely connect to Azure Database for MySQL
https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl

SSL証明書を準備する

Azure Database for MySQLへSSL接続するためには下記のURLからPEM形式の証明書をダウンロードします。
https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem

Web App Serviceにアップロードする

D:/home/site/wwwroot に bin フォルダを作成します。

ダウンロードしたファイルをアップロードします。

ポータルから下記のように設定します。
APP SETTING NAME | MYSQL_SSL_CA
VALUE | D:/var/www/html\BaltimoreCyberTrustRoot.crt.pem

WordPressの設定をする

WordPressにSSL接続するための設定を行います。
wp-config-sample.phpをコピーしwp-config.phpに変更し、以下を追記します。

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'));

他に下記も環境に合わせて設定しましょう。

define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

/** MySQL hostname */
define('DB_HOST', 'localhost');

あとはWordpressをインストールします。

アクセスして確認します。

まとめ

通常、MySQLは同ネットワーク内に作成するためそこまでSSL接続する必要性はないと思いますが、
もしインターネット経由でMySQLを利用する場合はSSL接続する必要はある程度必須です。
簡単にSSL接続することが可能です。ぜひ試してみてください。

-Azure
-,