すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:SSL 経由で ApsaraDB RDS for MySQL に接続する

最終更新日:May 13, 2026

このトピックでは、SSL 暗号化を有効にした後、MySQL CLI または JDBC を使用して ApsaraDB RDS for MySQL インスタンスに接続する方法について説明します。

前提条件

操作手順

クラウド証明書を使用した MySQL への接続

SSL 暗号化を有効にした後、クライアントと ApsaraDB RDS for MySQL インスタンス間の接続が暗号化されるかどうかは、クライアントのタイプとその設定によって異なります。暗号化された接続を要求し、インスタンスの ID を検証するために、クライアント設定またはアプリケーションコードを変更できます。

重要

MySQL 8.4、8.0、または 5.7 で、マイナーエンジンバージョンが 20241130 以降のインスタンスは、強制 SSL 暗号化をサポートしています。強制 SSL 暗号化を有効にすると、クライアントは SSL 暗号化接続でのみインスタンスに接続できます。

MySQL CLI

MySQL 5.7.11 以降のクライアントでは、接続コマンドに --ssl-mode オプションを追加して SSL 暗号化を設定できます。

説明

MariaDB クライアントおよびバージョン 5.7.11 より前の MySQL クライアントでは、--ssl や --ssl-verify-server-cert などのオプションを使用します。詳細については、MariaDB および MySQL の公式ドキュメントをご参照ください。

  • --ssl-mode=DISABLED:接続は暗号化されません。

  • --ssl-mode=PREFERRED、または --ssl-mode オプションを指定しない場合:暗号化された接続の確立を試みます。試行が失敗した場合、クライアントは暗号化されていない接続を使用します。

  • --ssl-mode=REQUIRED:暗号化された接続が必要です。暗号化された接続を確立できない場合、接続は失敗します。

  • --ssl-mode=VERIFY_CA:暗号化された接続を要求し、ローカル CA 証明書を使用してサーバー証明書を検証します。

  • --ssl-mode=VERIFY_IDENTITY:暗号化された接続を要求し、ローカル CA 証明書を使用してサーバー証明書を検証し、サーバー証明書内のホスト名または IP アドレスが接続に使用されたものと一致することを検証します。

例 1:暗号化された接続の確立を試みます。試行が失敗した場合、暗号化されていない接続が使用されます。

mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED

例 2:暗号化された接続とサーバー証明書の検証を要求します。

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path-to-ca-certificate}/ApsaraDB-CA-Chain.pem
説明
  • 上記の例では、{endpoint}、{username}、{path-to-ca-certificate} を実際の値に置き換えてください。

  • --ssl-mode オプションの詳細については、MySQL の公式ドキュメントをご参照ください。

MySQL Workbench

  1. MySQL Workbench を開き、[データベース] > [接続の管理] を選択します。

  2. エンドポイント、ユーザー名、パスワードを入力します。

  3. [SSL] タブで、[SSL を使用] パラメーターを設定し、[SSL CA ファイル] フィールドにダウンロードした PEM 形式の CA 証明書を指定して、[接続テスト] または [OK] をクリックします。

    説明

    [Use SSL] パラメーターの各オプションについては、MySQL CLI セクションの --ssl-mode の説明をご参照ください。

Data Management (DMS)

Data Management (DMS) で ApsaraDB RDS for MySQL インスタンスを追加する際に、[SSL の有効化] パラメーターを設定できます。 詳細については、「Alibaba Cloud データベースインスタンスを登録する」をご参照ください。

既存のインスタンスを右クリックして [インスタンスの編集] を選択し、[詳細情報] セクションで設定を構成することもできます。

アプリケーションコード

Java

Connector/J (mysql-connector-java) は、MySQL の公式 JDBC ドライバーです。この例では、mysql-connector-java 8.0.19 を依存関係として使用します。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
説明

次のサンプルコードでは、sslMode プロパティを使用して SSL モードを指定します。このプロパティは、mysql-connector-java 8.0.13 以降でサポートされています。それ以前のバージョンを使用する場合は、useSSL、requireSSL、verifyServerCertificate プロパティを使用する必要があります。詳細については、「MySQL ドキュメント」をご参照ください。

サンプルコード:

package com.aliyun.sample;

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Sample {

    public static void main(String[] args) {

        Connection conn = null;
        MysqlDataSource mysqlDS=null;

        try{
            mysqlDS = new MysqlDataSource();
            // 必要に応じて SslMode を設定します。使用可能なオプションについては、MySQL CLI セクションをご参照ください。
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            // トラストストアは CA 証明書を保存します。トラストストアのタイプは JKS に設定されています。
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // file:/ の後のパスを、ApsaraDB-CA-Chain.jks ファイルのパスに置き換えてください。
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // ダウンロードした JKS ファイルのパスワードは「apsaradb」で、変更できません。
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // データベースエンドポイント
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            // データベースポート
            mysqlDS.setPort(3306);
            // データベースユーザー名
            mysqlDS.setUser("xxxxxx");
            // データベースパスワード
            mysqlDS.setPassword("xxxxxx");
            // データベース名
            mysqlDS.setDatabaseName("xxxxxx");

            conn = mysqlDS.getConnection();

        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

Python

# pymysql をインストールします:pip install pymysql

import pymysql

try:
    ssl_config = {"ca":"/path/to/path/ca.crt", "mode":"VERIFY_CA"}   # "ca" は CA 証明書のパス、"mode" は ssl-mode です。
    conn = pymysql.connect(host='******.mysql.rds.aliyuncs.com', user='*****', passwd='******', db='*****', ssl=ssl_config)
    cursor = conn.cursor()
    cursor.execute('select version()')
    data = cursor.fetchone()
    print('Database version:', data[0])
    cursor.close()
except pymysql.Error as e:
    print(e)

カスタム証明書を使用した MySQL への接続

MySQL CLI

MySQL 5.7.11 以降のクライアントでは、接続コマンドに --ssl-mode オプションを追加して SSL 暗号化を設定できます。

説明

MariaDB クライアントおよびバージョン 5.7.11 より前の MySQL クライアントでは、--ssl や --ssl-verify-server-cert などのオプションを使用します。詳細については、MariaDB および MySQL の公式ドキュメントをご参照ください。

  • --ssl-mode=DISABLED:接続は暗号化されません。

  • --ssl-mode=PREFERRED、または --ssl-mode オプションを指定しない場合:暗号化された接続の確立を試みます。試行が失敗した場合、クライアントは暗号化されていない接続を使用します。

  • --ssl-mode=REQUIRED:暗号化された接続が必要です。暗号化された接続を確立できない場合、接続は失敗します。

  • --ssl-mode=VERIFY_CA:暗号化された接続を要求し、ローカル CA 証明書を使用してサーバー証明書を検証します。

  • --ssl-mode=VERIFY_IDENTITY:暗号化された接続を要求し、ローカル CA 証明書を使用してサーバー証明書を検証し、サーバー証明書内のホスト名または IP アドレスが接続に使用されたものと一致することを検証します。

例:

  1. 暗号化された接続の確立を試みます。試行が失敗した場合、暗号化されていない接続が使用されます。

    mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED
  2. 暗号化された接続とサーバー証明書の検証を要求します。

    mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path-to-custom-ca-certificate}
説明
  • 上記の例では、{RDS endpoint}{RDS username}{CA certificate path}、および {custom CA certificate path} を実際の値に置き換える必要があります。

  • --ssl-mode オプションの詳細については、「MySQL の公式ドキュメント」をご参照ください。

MySQL Workbench

  1. MySQL Workbench を開き、[Database] > [Manage Connections] を選択します。

  2. エンドポイント、ユーザー名、パスワードを入力します。

  3. [SSL] タブで、[Use SSL] パラメーターを設定し、[SSL CA File] フィールドにカスタム CA 証明書を指定してから、[Test Connection] または [OK] をクリックします。

説明

[Use SSL] パラメーターの各オプションについては、MySQL CLI セクションの --ssl-mode の説明をご参照ください。

Data Management (DMS)

Data Management (DMS) で ApsaraDB RDS for MySQL インスタンスを追加する際、[Enable SSL] パラメーターを設定できます。詳細については、「Alibaba Cloud データベースインスタンスの登録」をご参照ください。

既存のインスタンスを右クリックして [Edit Instance] を選択し、[詳細情報] セクションで設定することもできます。

アプリケーションコード

Java

Connector/J (mysql-connector-java) は、MySQL の公式 JDBC ドライバーです。この例では、mysql-connector-java 8.0.19 を依存関係として使用します。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
重要

カスタム証明書を使用する場合は、次のように JKS ファイルを手動で生成する必要があります。

  1. keytool ユーティリティは PEM 形式からのプライベートキーと証明書のインポートを直接サポートしていないため、OpenSSL を使用してクライアント証明書とプライベートキーを PKCS#12 形式に変換します。

    openssl pkcs12 -export -in {custom-ca-certificate} -inkey {custom-ca-private-key} -out keystore.p12 -name ganyang -CAfile {custom-ca-certificate}
    # パスワードを入力します。このパスワードは接続を確立する際に必要です。
    Enter Encryption Password:
    Verifying - Enter Encryption Password:
  2. keytool ユーティリティを使用して、PKCS#12 ファイルを新しい JKS ファイルにインポートします。

    keytool -importkeystore -deststorepass JKS-password -destkeypass key-password -destkeystore keystore.jks -deststoretype pkcs12 -srckeystore keystore.p12 -srcstoretype pkcs12 -srcstorepass P12-password -alias your-alias

    パラメーター:

    -deststorepass:JKS ファイルのパスワード。
    -destkeypass:JKS ファイル内のキーのパスワード。
    -destkeystore:作成する JKS ファイルまたは既存の JKS ファイル。
    -deststoretype:宛先ファイルタイプ (PKCS#12)。
    -srckeystore:ソース PKCS#12 ファイル。
    -srcstoretype:ソースファイルタイプ (PKCS#12)。
    -srcstorepass:ソース PKCS#12 ファイルのパスワード。
    -alias:クライアント証明書とプライベートキーのエイリアス。
  3. JKS ファイルの取得:インポートが成功したら、実行ディレクトリで keystore.jks ファイルを探します。

説明

次のサンプルコードでは、sslMode プロパティを使用して SSL モードを指定します。このプロパティは、mysql-connector-java 8.0.13 以降でサポートされています。それ以前のバージョンを使用する場合は、useSSL、requireSSL、verifyServerCertificate プロパティを使用する必要があります。詳細については、「MySQL ドキュメント」をご参照ください。

package com.aliyun.sample;

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Sample {

    public static void main(String[] args) {

        Connection conn = null;
        MysqlDataSource mysqlDS=null;

        try{
            mysqlDS = new MysqlDataSource();
            // 必要に応じて SslMode を設定します。使用可能なオプションについては、MySQL CLI セクションをご参照ください。
            mysqlDS.setSslMode("VERIFY_IDENTITY");

            // トラストストアの値は、カスタム証明書から生成した JKS ファイルのパスとパスワードに置き換えてください。
            // トラストストアは CA 証明書を保存します。トラストストアのタイプは JKS に設定されています。
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // file:/ の後のパスを、カスタム JKS ファイルのパスに置き換えてください。
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/path/to/your/keystore.jks");
            // カスタム JKS ファイル作成時に設定したパスワードを使用してください。
            mysqlDS.setTrustCertificateKeyStorePassword("{your-jks-password}");
          
            // データベースエンドポイント
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            // データベースポート
            mysqlDS.setPort(3306);
            // データベースユーザー名
            mysqlDS.setUser("xxxxxx");
            // データベースパスワード
            mysqlDS.setPassword("xxxxxx");
            // データベース名
            mysqlDS.setDatabaseName("xxxxxx");

            conn = mysqlDS.getConnection();

        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}
Python
# pymysql をインストールします:pip install pymysql

import pymysql

try:
    ssl_config = {"ca":"/path/to/path/ca.crt", "mode":"VERIFY_CA"}   # "ca" は CA 証明書のパス、"mode" は ssl-mode です。
    conn = pymysql.connect(host='******.mysql.rds.aliyuncs.com', user='*****', passwd='******', db='*****', ssl=ssl_config)
    cursor = conn.cursor()
    cursor.execute('select version()')
    data = cursor.fetchone()
    print('Database version:', data[0])
    cursor.close()
except pymysql.Error as e:
    print(e)