Aurora MySQL 3.14 がリリースされたので、変更点を確認して PQ 鍵交換を試してみた

Aurora MySQL 3.14 がリリースされたので、変更点を確認して PQ 鍵交換を試してみた

Aurora MySQL 3.14.0 の PQ 鍵交換を Amazon Corretto 27 から試しました。デフォルトのパラメータグループのまま、設定変更なしで X25519MLKEM768 がネゴシエートされました。
2026.11.04

はじめに

2026年11月2日、MySQL 8.0.46 互換の Aurora MySQL 3.14.0 の GA が発表されました。

https://aws.amazon.com/jp/about-aws/whats-new/2026/11/amazon-aurora-mysql-314-available/

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.Updates.3140.html

前バージョン 3.13 は次の記事で紹介しています。

https://dev.classmethod.jp/articles/aurora-mysql-3-13-ga-data-api/

この記事では、3.14.0 で追加された PQ(ポスト量子)鍵交換を取り上げます。新規作成したクラスターへ Amazon Corretto 27 から JDBC 接続し、鍵交換グループのネゴシエート結果を確認しました。

3.14.0 の更新内容

3.14.0 は 2026年10月26日にリリースされ、標準サポート終了日は 2027年10月27日です(メジャーバージョン3の標準サポート終了は 2028年4月30日)。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.release-calendars.html

3.14.0 では、TLS 1.3 のハイブリッド鍵交換グループとして X25519MLKEM768 と SecP256r1MLKEM768 が追加されました。対応クライアントはこれらのグループを自動でネゴシエートし、非対応クライアントは従来のグループを使います。接続ごとに選ばれたグループは、次のコマンドで確認できます。

SHOW STATUS LIKE 'Aurora_ssl_named_group';

PQ 鍵交換以外は、深刻度の高い CVE 修正を中心に、単一テーブル DELETE での RETURNING 句対応、CloudWatch メトリクス追加などが入っています。詳細はリリースノートを参照してください。

検証方法

構成

新規作成した Aurora MySQL 3.14.0 クラスターに、EC2 から JDBC 接続しました。

項目 値
Aurora MySQL 3.14.0(8.0.mysql_aurora.3.14.0、MySQL 8.0.46 互換)
クラスター db.t4g.medium のライター1台
パラメータグループ default.aurora-mysql8.0(デフォルト)
リージョン ap-northeast-1
接続元 EC2 t4g.micro、Amazon Linux 2023(aarch64)
JDBC ドライバー MySQL Connector/J 26.10.0
接続設定 sslMode=REQUIRED
Corretto 27.0.1.0.11

Corretto は 2026年11月3日時点で corretto.aws/downloads/latest/ から取得した最新ビルドです。

接続とログの取得

検証には、JDBC で接続して7つのクエリを実行する Probe.java を使いました。java コマンドに -Djavax.net.debug=ssl:handshake を付けて実行し、TLS ハンドシェイクのログを出力します。ユーザー名とパスワードは、環境変数 DB_USER と DB_PASS で渡します。

java -Djavax.net.debug=ssl:handshake -cp mysql-connector-j-26.10.0.jar Probe.java <クラスターエンドポイント>
Probe.java
import java.sql.*;

public class Probe {
    static void q(Statement st, String sql) throws SQLException {
        System.out.println("=== QUERY: " + sql);
        try (ResultSet rs = st.executeQuery(sql)) {
            int n = rs.getMetaData().getColumnCount();
            while (rs.next()) {
                StringBuilder sb = new StringBuilder();
                for (int i = 1; i <= n; i++) {
                    if (i > 1) sb.append(" | ");
                    sb.append(rs.getString(i));
                }
                System.out.println(sb);
            }
        }
    }

    public static void main(String[] a) throws Exception {
        String host = a[0];
        String url = "jdbc:mysql://" + host + ":3306/?sslMode=REQUIRED";
        System.out.println("=== JAVA: " + System.getProperty("java.vendor.version")
            + " / java.version=" + System.getProperty("java.version"));
        try (Connection c = DriverManager.getConnection(url, System.getenv("DB_USER"), System.getenv("DB_PASS"));
             Statement st = c.createStatement()) {
            System.out.println("=== DRIVER: " + c.getMetaData().getDriverName() + " " + c.getMetaData().getDriverVersion());
            q(st, "SELECT VERSION()");
            q(st, "SELECT aurora_version()");
            q(st, "SHOW VARIABLES LIKE 'tls%'");
            q(st, "SHOW VARIABLES LIKE 'ssl%'");
            q(st, "SHOW STATUS LIKE 'Ssl_version'");
            q(st, "SHOW STATUS LIKE 'Ssl_cipher'");
            q(st, "SHOW STATUS LIKE 'Aurora_ssl_named_group'");
        }
    }
}

sslMode=REQUIRED は暗号化接続を要求しますが、サーバー証明書は検証しません。鍵交換グループの確認が目的のため、今回はこの設定にしています。

検証結果

Corretto 27.0.1.0.11 で接続しました。

https://dev.classmethod.jp/articles/amazon-corretto27-ga-pq-tls/

クエリの出力は次のとおりです。SHOW VARIABLES LIKE 'ssl%' の結果のうち、ssl_cipher の行は暗号スイートの一覧が長いため省いています。

=== QUERY: SELECT VERSION()
8.0.46
=== QUERY: SELECT aurora_version()
3.14.0
=== QUERY: SHOW VARIABLES LIKE 'tls%'
tls_ciphersuites | 
tls_version | TLSv1.2,TLSv1.3
=== QUERY: SHOW VARIABLES LIKE 'ssl%'
ssl_ca | /rdsdbdata/rds-metadata/ca-cert.pem
ssl_capath | 
ssl_cert | /rdsdbdata/rds-metadata/server-cert.pem
ssl_crl | 
ssl_crlpath | 
ssl_fips_mode | ON
ssl_key | /rdsdbdata/rds-metadata/server-key.pem
ssl_session_cache_mode | ON
ssl_session_cache_timeout | 300
=== QUERY: SHOW STATUS LIKE 'Ssl_version'
Ssl_version | TLSv1.3
=== QUERY: SHOW STATUS LIKE 'Ssl_cipher'
Ssl_cipher | TLS_AES_256_GCM_SHA384
=== QUERY: SHOW STATUS LIKE 'Aurora_ssl_named_group'
Aurora_ssl_named_group | X25519MLKEM768

tls と ssl で始まる変数に、PQ 鍵交換を切り替える項目は含まれません。デフォルトのパラメータグループのままでも、Aurora_ssl_named_group の値は X25519MLKEM768 でした。

クライアントが提示したグループは、ハンドシェイクログの ClientHello の supported_groups (10) で確認できます。サーバーが選んだグループは、ServerHello の server_share に入ります。

    "supported_groups (10)": {
      "named groups": [X25519MLKEM768, x25519, secp256r1, secp384r1, secp521r1, x448, ffdhe2048, ffdhe3072, ffdhe4096]
    "key_share (51)": {
      "server_share": {
        "named group": X25519MLKEM768

Corretto 27 は X25519MLKEM768 を先頭に提示し、サーバーも同じグループを選びました。

まとめ

MySQL 8.0.46 互換の Aurora MySQL 3.14.0 がリリースされました。LTS は 3.04 と 3.10 で、それ以外の 3.x マイナー(3.08 / 3.11 / 3.12 / 3.13 / 3.14 など)は非 LTS です。3.08 から 3.13 までの非 LTS を使っているなら、深刻度の高い CVE 修正を含む 3.14 への移行をおすすめします。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事