昨日しばやん先生の記事を見かけてました。 まさに使おうとしていたところで、他人ごとではありませんでした。
公式情報
まずは公式情報。
現在、サービスへの mysql.exe 接続で “–ssl-mode=VERIFY_IDENTITY” オプションを使用した場合に、接続が次のエラーで失敗するという既知の問題が確認されています: ERROR 2026 (HY000): SSL connection error: SSL certificate validation failure Please downgrade to “–ssl-mode=VERIFY_CA” or lesser SSL modes (エラー 2026 (HY000): SSL 接続エラー: SSL 証明書の検証エラー “–ssl-mode=VERIFY_CA” または以前の SSL モードにダウングレードしてください)。 “–ssl-mode=VERIFY_IDENTITY” の使用が必要な場合は、サーバー名に ping を実行して、リージョン サーバー名を解決し (westeurope1-a.control.database.windows.net など)、この問題が解決するまで、接続内でそのリージョン サーバー名を使用します。 この制限は、今後削除する予定です。 Azure Database for MySQL に安全に接続するためにアプリケーションで SSL 接続を構成する | Microsoft Docs
ということなのでそのうち修正されるとは思いますが、現時点で使いたかったため、検証エラーを回避することにしました。
PHP はそれほど詳しくないため、以下の接続ドライバしか確認していません。
回避策
mysqli
mysqli_real_connect( $connection, $host, $user, $pass, $name, 3306, '', MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
参考: http://blog.machek.co.uk/2016/06/php-with-mysql-and-ssl.html
PDO
まだ対応できません。 PullReq 中のようです。
おわりに
アップデートされたらこの記事の価値はなくなるので、そのころに見かけた人はスルーしてください。