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