PHPのPDOからAzure Database for MySQLにSSL接続する機会があったので、接続方法を紹介します。
- Azure Database for MySQLについて
- PDOでAzure Database for MySQLにSSL接続
- まとめ
1. Azure Database for MySQLのSSL接続ついて
Azure Database for MySQLのデフォルトではSSL接続の強制が有効になっています。
SSL接続を無効にすることもできますが、Azureは無効にしないことを推奨しています。
2. PDOでAzure Database for MySQLにSSL接続
PHPのPDOを使う際、なんの設定もせずDBに接続しようとすると、SSL接続を強制しているAzure Database for MySQLには接続できません。
ここでは、PHPのPDOでAzure Database for MySQLに接続する方法を紹介します。
2.1 SSL証明書をダウンロード
Azure Database for MySQLのSSL接続に必要な証明書を
https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem
(Microsoft Internet ExplorerとMicrosoft Edge の場合、証明書の名前を BaltimoreCyberTrustRoot.crt.pem に変更してください。)
ダウンロードしたSSL証明書をローカル環境に保存しておいてください。
2.2 PDOのSSL設定
以下がPDOでSSL接続するコードになります。
1 2 3 4 |
$db = new PDO( "mysql:host={DBのホスト};dbname={DB名}",{DBユーザ},{DBパスワード}, array(PDO::MYSQL_ATTR_SSL_CA => {SSL証明書のパス}) ); |
先程ダウンロードしたSSL証明書のパスをPDO::MYSQL_ATTR_SSL_CA に設定するだけで接続できます。
3. まとめ
SSL周りにあまり詳しくなかったのでSSL接続することに少し構えていたのですが、SSLの設定が既にされてあるAzure Database for MySQLに接続するだけでしたので思ったより簡単でした。
参考になればと思います。
参考
https://docs.microsoft.com/ja-jp/azure/mysql/howto-configure-ssl