はじめに
Azure Database for MySQLに接続する場合の注意事項です。
mysqlのバージョンによって挙動が異なるためまとめました。
Azure Database for MySQLにSSL接続する方法
以下では、Linux、Windowsなどの接続方法が説明されています。
Configure SSL connectivity in your application to securely connect to Azure Database for MySQL
https://docs.microsoft.com/ja-jp/azure/mysql/howto-configure-ssl
重要なのはCAファイルを .cer ファイルから .pem に変換することです。
以下よりcrtをダウンロード
https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt
変換します。
openssl x509 -inform DER -in BaltimoreCyberTrustRoot.crt -out MyServerCACert.pem
caを指定する場合は、MyServerCACert.pemを指定します。
mysql5.1
AzureでCentOS6系を選択し、mysqlを導入するとmysql5.1がインストールされます。
mysql5.1では以下の挙動になります。
$ mysql --version mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
指定がない場合、SSLは有効になりません。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com Enter password: ERROR 2001 (28000): SSL connection is required. Please specify SSL options and retry.
--ssl-cipherを指定することSSLを有効にします。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com --ssl-cipher=AES256-SHA Enter password: ERROR 2026 (HY000): SSL connection error
作成したpemを指定します。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com --ssl-ca=MyServerCACert.pem Enter password: ERROR 2026 (HY000): SSL connection error
どれも接続できませんでした。
mysql5.6
AzureでCentOS6系を選択し、mysql-communityから5.6を導入します。
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum -y install mysql-community-client
$ mysql --version mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper
指定がない場合、SSLは有効になりません。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com Enter password: ERROR 2001 (28000): SSL connection is required. Please specify SSL options and retry.
--ssl-cipherを指定することSSLを有効にします。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com --ssl-cipher=AES256-SHA Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 65533 Server version: 5.6.26.0 MySQL Community Server (GPL)
作成したpemを指定します。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com --ssl-ca=MyServerCACert.pem Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 65531 Server version: 5.6.26.0 MySQL Community Server (GPL)
SSLオプションを付けることでSSLが行えます。
mysql5.7
AzureでCentOS7系を選択し、mysqlを導入するとmysql5.7がインストールされます。
mysql --version mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper
指定がない場合でも自動判定?してSSL接続されます。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 65528 Server version: 5.6.26.0 MySQL Community Server (GPL)
--ssl-cipherを指定することSSLを有効にします。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com --ssl-cipher=AES256-SHA Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 65533 Server version: 5.6.26.0 MySQL Community Server (GPL)
作成したpemを指定します。
# mysql -p -u dbuser@demomysql3 -h demomysql3.mysql.database.azure.com --ssl-ca=MyServerCACert.pem Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 65532 Server version: 5.6.26.0 MySQL Community Server (GPL)
特に指定しなくても接続できます。
利用できるSSL Cipher
mysql> SHOW STATUS LIKE 'Ssl_cipher_list'; +-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Variable_name | Value | +-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Ssl_cipher_list | DHE-RSA-AES256-SHA:AES256-SHA:DHE-RSA-AES128-SHA:AES128-SHA:AES256-RMD:AES128-RMD:DES-CBC3-RMD:DHE-RSA-AES256-RMD:DHE-RSA-AES128-RMD:DHE-RSA-DES-CBC3-RMD:RC4-SHA:RC4-MD5:DES-CBC3-SHA:DES-CBC-SHA:EDH-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC-SHA | +-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
利用できるSSL Cipher一覧
DHE-RSA-AES256-SHA AES256-SHA DHE-RSA-AES128-SHA AES128-SHA AES256-RMD AES128-RMD DES-CBC3-RMD DHE-RSA-AES256-RMD DHE-RSA-AES128-RMD DHE-RSA-DES-CBC3-RMD RC4-SHA RC4-MD5 DES-CBC3-SHA DES-CBC-SHA EDH-RSA-DES-CBC3-SHA EDH-RSA-DES-CBC-SHA
--ssl-cipher を指定する場合は上記を指定できます。
まとめ
mysqlクライアントは問題ない限りは、CentOS7は5.7を利用しましょう。
CentOS6は5.6の場合は--ssl-cipherに一覧のどれかを指定すればよいでしょう。
本稿は、あくまでもコマンドで接続する場合です。アプリケーションなどではセキュリティを考慮した接続をしてください。
ではでは