Azure Database for MySQL を使いたかったので証明書の検証エラーを回避した話

昨日しばやん先生の記事を見かけてました。 まさに使おうとしていたところで、他人ごとではありませんでした。

blog.shibayan.jp


公式情報

まずは公式情報。

現在、サービスへの 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 中のようです。

add a attribute to specify CN in PDO(version 7) by ghfjdksl · Pull Request #1913 · php/php-src · GitHub

おわりに

アップデートされたらこの記事の価値はなくなるので、そのころに見かけた人はスルーしてください。

PHP で Yammer の REST API を叩くためのライブラリを公開した

Yammer の REST API を使いたかった。
既存の Apache で手軽に動かすために PHP を使いたいが、公式では SDK がない。

Yammer SDK


なければ作ればいいじゃない。
ってことで、作って公開した。

kheiakiyama/php_yam · GitHub


公式の Ruby SDK にインターフェースを近づけてみた。
いわば写経、というか翻訳か。


自分が使うもの以外をテストする気がないので GETメソッド の一部しか対応してない。
他の API を生やすのは簡単そうなので真似ればできるはず。
世の中の誰かのためになれば。


いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~