MySQLで証明書接続

  • 2022.12.31
  • web
MySQLで証明書接続

サーバー証明書を使って、MySQLに接続する方法です。

 

まずは、外部からも接続出来るようにファイヤーウォール設定。

sudo firewall-cmd --add-service=mysql

 

では、証明書を作っていきます。以下の公式資料を参考に証明書作成していきます。

https://dev.mysql.com/doc/refman/5.6/ja/creating-ssl-certs.html

公式には、クライアント証明書も書いてありますが、今回試すのはサーバー証明書だけです。

# 証明書作成用ディレクトリを作る
rm -rf newcerts
mkdir newcerts && cd newcerts

# CA証明書作成
※VERIFY_IDENTITYを使う場合は、Common Nameにホスト名を入力する。
openssl genrsa 2048 > ca-key.pem 
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem

# サーバー証明書作成
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

# サーバーコピー
sudo cp server-cert.pem /var/lib/mysql/server-cert.pem
sudo cp server-key.pem /var/lib/mysql/server-key.pem

# ファイルのオーナーをmysql1にする
sudo chown mysql:mysql /var/lib/mysql/server-cert.pem
sudo chown mysql:mysql /var/lib/mysql/server-key.pem

 

証明書が作れたら、以下のように設定ファイルに設定していきます。

# 設定ファイルを開く
sudo vim /etc/my.cnf

# 設定ファイルに以下のように証明書の設定をする
ssl-cert = /var/lib/mysql/server-cert.pem
ssl-key = /var/lib/mysql/server-key.pem

# 再起動
systemctl restart mysqld

サーバー側の設定が終わったら、クライアント側でCA証明書をダウンロードする。

scp ユーザー名@ドメイン名:/ユーザーのホームディレクトリ/newcerts/ca-cert.pem ca-cert.pem

証明書を使用してmysqlに接続する。

mysql -h ホスト名 -u ユーザー名 -p --ssl-mode=VERIFY_IDENTITY --ssl-ca=ca-cert.pem

注意点

接続しても繋がらない場合はCA証明書とサーバー証明書で同じ情報を入力している可能性がある。

CA証明書だけ「JP」を入れるなどするとエラーが解決される。

参考:

https://orebibou.com/ja/home/201608/20160801_001/

 

 

webカテゴリの最新記事