2团
Published on 2024-08-15 / 32 Visits
0
0

MySQL 8.4的Docker compose设置自动生成SSL以及RSA文件并启用加密连接

1.Docker compose文件

MySQL的Docker compose文件具体如下所示:

version: "3.9"

services:
  mysql:
    image: mysql:8.4.0
    volumes:
      - ./data:/var/lib/mysql
      - ./certs:/etc/mysql/certs
    environment:
      - MYSQL_ROOT_PASSWORD=@*******1*******@
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=@*******1*******@
      - caching_sha2_password_auto_generate_rsa_keys=ON
    command:
	  - --require_secure_transport=ON
      - --bind-address=0.0.0.0
    ports:
      - 3306:3306

相对于MySQL常规配置,当前文件中启用了caching_sha2_password_auto_generate_rsa_keys环境变量,并设置其状态为ON。

--require_secure_transport:启动参数中设置此参数,已确保MySQL只允许加密连接。

2.caching_sha2_password_auto_generate_rsa_keys变量释义

根据8.3.3.1 Creating SSL and RSA Certificates and Keys using MySQL一文,在如下情况:

  1. 启用caching_sha2_password_auto_generate_rsa_keys环境变量;

  2. MySQL未设置任何加密参数;

MySQL在启动时会生成SSL以及RSA文件,并自动加载此文件,启用加密连接配置,详见下图:

image-gwjk.png

因此当前Docker compose文件中设置caching_sha2_password_auto_generate_rsa_keys环境变量为开启状态。

3.获取客户端连接配置文件

MySQL启用加密连接后,客户端连接的时候,需要配置以下文件:

  1. CA证书;

  2. 客户证书;

  3. 客户密钥。

以上文件MySQL均会生成在其数据文件夹下,详见下图:

image-gnrq.png

从挂载目录下拷贝此文件,客户端即可启用与MySQL的加密连接。


Comment