0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:TLS/SSL証明書のエラー(ERROR 2026 (HY000))の原因と解決策についてまとめてみた

Posted at

はじめに

AWS RDS (MySQL) に TLS/SSL 経由で接続しようとした際に発生するエラーについて、原因と対策をまとめました。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

特に、証明書の検証エラーが発生する場合の対応方法を詳しく解説します。

書こうと思ったきっかけ

このエラーは MySQL を RDS に接続する際に頻繁に発生し、解決方法が分かりにくいことが多いため、具体的な手順を整理しておくことが重要だと感じました。

また、環境によって適切な対処方法が異なるため、選択肢を提示する形でまとめました。

エラーの概要

ERROR 2026 (HY000): TLS/SSL error: Certificate verification failure: The certificate is NOT trusted.

このエラーは、AWS RDS (MySQL) に TLS/SSL 経由で接続しようとした際に、証明書の検証に失敗したことを示しています。

解決策

エラーを解決するには、以下の3つの方法があります。

1. TLS/SSL 証明書のチェックを無効化する

MySQL に接続する際に --ssl-mode=DISABLED オプションを指定することで、証明書の検証をスキップし、非SSL接続を試みることができます。

実行コマンド

/app # mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW --ssl-mode=DISABLED $MYSQL_DB

この方法は、RDS が内部ネットワークで動作している場合に有効であり、セキュリティ上問題がないことが多いです。

2. 正しい RDS の CA 証明書をダウンロードして利用する

もし TLS/SSL 接続が必須の場合は、AWS 公式の CA 証明書をダウンロードし、それを指定して接続する必要があります。

証明書のダウンロード

wget -O /app/rds-ca.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

証明書を指定して MySQL に接続

/app # mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW --ssl-ca=/app/rds-ca.pem $MYSQL_DB

この方法により、正しく TLS/SSL 接続が確立されます。

3. MariaDB クライアントではなく MySQL クライアントを使用

Alpine Linux では mysql-client が MariaDB クライアントになっているため、mariadb コマンドを使うと解決する場合があります。

MariaDB クライアントで接続

/app # mariadb -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW $MYSQL_DB

また、MySQL 公式クライアントを利用したい場合は、追加のリポジトリから取得する必要があります。

どの方法を選ぶべきか?

方法 メリット デメリット
--ssl-mode=DISABLED を使用 すぐに簡単に接続できる TLS/SSL を使用しない
RDS の CA 証明書をダウンロード 正しい TLS/SSL 設定ができる 証明書の管理が必要
mariadb コマンドを使用 追加の証明書が不要 mysql コマンドが使えない

まとめ

すぐに試すなら --ssl-mode=DISABLED

/app # mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW --ssl-mode=DISABLED $MYSQL_DB

TLS/SSL を有効にするなら AWS の証明書をダウンロード

wget -O /app/rds-ca.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW --ssl-ca=/app/rds-ca.pem $MYSQL_DB

MariaDB クライアントを使う場合

/app # mariadb -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW $MYSQL_DB

最も簡単な解決策は --ssl-mode=DISABLED を指定する方法 なので、まずはこれを試してみるのが良いでしょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?