
Aurora MySQL 3.14 がリリースされたので、変更点を確認して PQ 鍵交換を試してみた
はじめに
2026年11月2日、MySQL 8.0.46 互換の Aurora MySQL 3.14.0 の GA が発表されました。
前バージョン 3.13 は次の記事で紹介しています。
この記事では、3.14.0 で追加された PQ(ポスト量子)鍵交換を取り上げます。新規作成したクラスターへ Amazon Corretto 27 から JDBC 接続し、鍵交換グループのネゴシエート結果を確認しました。
3.14.0 の更新内容
3.14.0 は 2026年10月26日にリリースされ、標準サポート終了日は 2027年10月27日です(メジャーバージョン3の標準サポート終了は 2028年4月30日)。
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 で接続しました。
クエリの出力は次のとおりです。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 への移行をおすすめします。









